2017-05-16 4 views
0

を実行した後、私はその後py2exeを使用してexeファイルを作成し、私私はlibディレクトリにチェックしQueue.pyが のpython 2.7を使用してこの問題 イムを解決するために私を助けてください、すでにそのディレクトリに存在し、この下のエラー が直面していますキューのインポートエラーexeファイル

Traceback (most recent call last): 
    File "Game2048.py", line 12, in <module> 
    File "pynput\__init__.pyc", line 23, in <module> 
    File "pynput\keyboard\__init__.pyc", line 44, in <module> 
    File "pynput\keyboard\_win32.pyc", line 32, in <module> 
    File "pynput\_util\__init__.pyc", line 34, in <module> 
    File "six.pyc", line 203, in load_module 
    File "six.pyc", line 115, in _resolve 
    File "six.pyc", line 82, in _import_module 
ImportError: No module named Queue 
+0

py2exeによって作成された "library.zip"ファイルに "Queue.pyc"または "Queue.pyo"がありますか?必要ならば、py2exeがすべてをexe-fileに束ねるのではなく、setup.pyを作成するようにsetup.pyを修正してください。 –

+0

"library.zip"に "Queue.pyc"を追加した後、私のexeは正常に動作しています。 しかし、 "キュー"がライブラリにない理由は何ですか? –

+0

これはより長い回答が必要でした –

答えて

0

py2exeは、明示的にsetup.pyで言及されたものモジュール(単数または複数)でimport文を調べることによって、最終的なZIPファイルまたは実行可能ファイルに含めるモジュールかを決定します。次に、これらのインポートされたモジュールを実行可能ファイルの依存関係に追加し、これらの新しく追加されたモジュール内のすべてのインポートステートメントをチェックして、インポートに新しいモジュールが見つからなくなるまで、さらに必要なモジュールを探します。

ここでは、モジュールQueueは動的にインポートされます。__import__("Queue")のようなものはpy2exeによって自動的に認識されません。したがって、モジュールは必要に応じて表示されません。これは、すでに実行可能ファイルに追加されたモジュール内の人工的な依存関係を追加解決するために

if False: 
    import Queue 

コードは効果がありませんが、py2exe import文を見て、それに従います。

関連する問題