これは、32 ビットと 64 ビットの両方の Python がインストールされていて、パス上にあることが原因である可能性があります。
からの出力をよく見てくださいpython setup.py py2exe
. . .
*** copy extensions ***
copying C:\Python27\DLLs\_hashlib.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\_socket.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\_ssl.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\bz2.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\select.pyd -> C:\path\to\project\dist
copying C:\Python27\DLLs\unicodedata.pyd -> C:\path\to\project\dist
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\pyodbc-3.0.7-py2.7-win32.egg\pyodbc.pyd -> C:\path\to\project\dist
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\win32\win32print.pyd -> C:\path\to\project\dist
*** copy dlls ***
copying C:\Windows\system32\python27.dll -> C:\path\to\project\dist
setting sys.winver for 'C:\path\to\project\dist\python27.dll' to 'ProjectNameHere'
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\pywin32_system32\pywintypes27.dll -> C:\path\to\project\dist
copying C:\Windows\system32\CRYPT32.dll -> C:\path\to\project\dist
copying C:\PythonEnvs\some_virtualenv\lib\site-packages\py2exe-0.6.9-py2.7-win32.egg\py2exe\run.exe -> C:\path\to\project\dist\mlr_startup.exe
py2exe が必要な場所からのみプルしていることを確認してください。
上記の機能例では、py2exe は Python 2.7 のシステム インストールからプルしていますC:\Python27
。現在の仮想環境からも引き込んでいますC:\PythonEnvs\some_virtualenv\lib\site-packages
。これにより、実行可能な実行ファイルが作成されます。
私がこの問題を抱えていたとき、py2exe が互換性のないバージョンの Python を持つ他の場所からも何かを取り込んでいることがわかりました。
たとえば、私は 32 ビットの公式 Python を持っていて、64 ビット バージョンの Mercurial をインストールしました。Mercurial は独自の 64 ビット バージョンの Python をインストールし、py2exe は 32 ビットと 64 ビットの実行可能ファイルを組み合わせC:\Python27
てC:\Program Files\Mercurial\Python27
.
それを解決するために、Mercurial をアンインストールしました。または、Python パスを変更して、py2exe が Python の Mercurial がインストールされたバージョンやその他の望ましくない Python のインストールを認識しないようにすることもできます。