2017-11-17 91 views
0

私はcx_Freezeで配布したいコンソールモードプログラムを持っています。私は、新しくインストールしたwin 10マシンにpython 3.6.3(amd64とwin32バージョンの両方)をダウンロードしました。私は車輪(ピピからではない)からcx_Freeze 5.1をインストールしました。次に、amd64とwin32の両方のプログラムをビルドしました。私はそれを構築している同じマシン上のexeファイルを実行しようとすると、私はこのエラーを取得する:cx_freeze:ModuleNotFoundErrorとプログラムが動作を停止しました

Fatal Python error: Py_Initialize: unable to load the file system codec 
Traceback (most recent call last): 
    File "C:\Program Files\Python36\lib\encodings\__init__.py", line 31, in <module> 
ModuleNotFoundError: No module named 'codecs' 

私は両方のアーキテクチャで同じエラーを持っています。私は明示的に「コーデック」のパッケージを指定している、言い換えれば

#!/usr/bin/env python3 
from cx_Freeze import setup, Executable 

# Dependencies are automatically detected, but it might need fine tuning. 
build_exe_options = { 
    "packages": [ 
     "os", "io", "copy", "struct", "hashlib", "random", 
     "urllib", "pycurl", "json", "multiprocessing", 
     "cryptography", 
     "tornado", "watchdog", "pathtools" 
    ], 
    "includes": [ 
     "cryptography", "urllib.parse", 
    ], 
    "include_files": ["tmp", "server.ini", "client.ini"], 
    "excludes": ["tkinter"], 
} 

setup(
    name="BlindBackup", 
    version="1.0", 
    description="BlindBackup", 
    options={"build_exe": build_exe_options}, 
    executables=[ 
     Executable("backup.py", base=None), 
     Executable("bsync.py", base=None), 
     Executable("server.py", base=None), 
    ] 
) 

:セットアップファイルは次のようになります。

どうしたのですか?

UPDATE配布ディレクトリにlibrary.zipというファイルがあります。それにはcodecs.pycが含まれていますが、exeファイルには表示されません。私はジップからすべてのファイルを抽出した場合、私は別のエラーメッセージが表示されます:

C:\Python\Projects\blindbackup\build\exe.win-amd64-3.6>backup.exe 
Traceback (most recent call last): 
    File "C:\Program Files\Python36\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run 
    module.run() 
    File "C:\Program Files\Python36\lib\site-packages\cx_Freeze\initscripts\Console.py", line 22, in run 
    importer = zipimport.zipimporter(os.path.dirname(os.__file__)) 
zipimport.ZipImportError: not a Zip file 

私はこの問題はlibrary.zipファイルからモジュールをインポートしようとするコードであることを推測しますか?しかし、それを修正する方法がわからない。

答えて

0

ソリューションは、このでした:

  • バージョン5は、(明らかに)のpython 3.6をサポートしていないので、cx_freeze 6をインストール
  • (それは私のプログラムのために必要ではなかったが)pywin32をインストール
  • は、すべての追加しますpydファイルが「インクルード」していなくて、「パッケージ」に欠けているパッケージがある場合は、それがセットアップスクリプトになります。
+1

私は、cx_freezeを使用するたびにexeが正常に動作するように特別なマッサージが必要であることがわかりました。 –

関連する問題