ホームページ > バックエンド開発 > Python チュートリアル > PyInstaller が「ImportError: No module names 'blah'」をスローする理由とその修正方法

PyInstaller が「ImportError: No module names 'blah'」をスローする理由とその修正方法

Barbara Streisand
リリース: 2024-11-14 19:36:02
オリジナル
193 人が閲覧しました

Why Is PyInstaller Throwing

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 つのオプションがあります:

  1. 明示的なインポートの追加: 不足しているモジュールの未使用のインポートを手動で追加できます。 Python コード。これにより、PyInstaller はそれらを実行可能ファイルに強制的に含めます。
  2. '--hidden-import' オプションを使用します: '--hidden-import' オプションを使用すると、特定のモジュールを含めるように PyInstaller に指示できます。コード内で明示的に宣言されていない可能性があります。たとえば、次のコマンドを使用できます。
python pyinstaller --hidden-import mysql.connector --onefile myscript.py
ログイン後にコピー

このコマンドは、コードに明示的にインポートされていない場合でも、「mysql.connector」モジュールを実行可能ファイルに含めるよう PyInstaller に指示します。 .

--onefile に関するメモオプション

「--onefile」オプションは、実行可能ファイルにモジュールを含めることに直接影響しません。 PyInstaller で生成されたすべてのファイルを単一の実行可能ファイルにパッケージ化するだけです。

以上がPyInstaller が「ImportError: No module names 'blah'」をスローする理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート