PyInstaller 仕様ファイルのインポート エラー: 「名前付きモジュールがありません」の解決
PyInstaller を使用して Python スクリプトをビルドしようとすると、エラー「インポートエラー: 'blah' という名前のモジュールがありません」。この問題は、PyInstaller が実行可能ファイルに必要なモジュールをすべて含めることに失敗した場合に発生します。
スペック ファイルの構成
生成したスペック ファイルには次の分析が含まれています:
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'icinga.py'], pathex=['/home/user/projects/icinga_python/releases/v2.1'])
この分析では、実行可能ファイルに含まれる Python ファイルが特定されます。ただし、「mysql」モジュールや「urllib2」モジュールなどのサードパーティ パッケージのモジュールは含まれていないようです。
Dynamic Imports
Python スクリプトは、「importlib」モジュールを使用するなどしてモジュールを動的にインポートしますが、PyInstaller はモジュールを 実行可能。これは、動的インポートがコード内で明示的に宣言されていないためです。
エラーの解決
このエラーを解決するには、2 つのオプションがあります:
python pyinstaller --hidden-import mysql.connector --onefile myscript.py
このコマンドは、コードに明示的にインポートされていない場合でも、「mysql.connector」モジュールを実行可能ファイルに含めるよう PyInstaller に指示します。 .
--onefile に関するメモオプション
「--onefile」オプションは、実行可能ファイルにモジュールを含めることに直接影響しません。 PyInstaller で生成されたすべてのファイルを単一の実行可能ファイルにパッケージ化するだけです。
以上がPyInstaller が「ImportError: No module names 'blah'」をスローする理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。