2017-10-23 3 views
1

私は他の多くの質問と同じ問題を抱えていますが、まだ解決策が見つかっていません。これは、Windows 10 64ビット版、Python 3.6 32ビット版です。CX_freeze実行ファイルは機能しません。 _tkinter DLLの読み込みに失敗しました

私は、セットアップファイルのパスと変数のさまざまな組み合わせを64ビットPythonで何回かアンインストールしようとしました。

exeファイルのトレースバックがPythonフォルダ内のファイルパスを参照するのではなく、実行ファイルが存在するビルドフォルダを参照するのは混乱します。私はこのexeが今Pythonフォルダの存在を「無邪気」にするはずだと思ったでしょうか? cx_freezeのためのexeファイル

Traceback (most recent call last): 
    File "C:\Program Files (x86)\Python36-32\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run 
    module.run() 
    File "C:\Program Files (x86)\Python36-32\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run 
    exec(code, m.__dict__) 
    File "main3.py", line 2, in <module> 
    File "C:\Program Files (x86)\Python36-32\lib\site-packages\appJar\__init__.py", line 2, in <module> 
    from appJar.appjar import gui 
    File "C:\Program Files (x86)\Python36-32\lib\site-packages\appJar\appjar.py", line 23, in <module> 
    from tkinter import * 
    File "C:\Program Files (x86)\Python36-32\lib\tkinter\__init__.py", line 36, in <module> 
    import _tkinter # If this fails your Python may not be configured for Tk 
ImportError: DLL load failed: The specified module could not be found. 

マイセットアップファイルから

出力 -

from cx_Freeze import setup, Executable 
import os 
os.environ['TCL_LIBRARY'] = r'C:\Program Files (x86)\Python36-32\tcl\tcl8.6' 
os.environ['TK_LIBRARY'] = r'C:\Program Files (x86)\Python36-32\tcl\tk8.6' 

build_exe_options={ 
"includes": [], 
"packages": ["os","tkinter"], 
"include_files" : [r'C:\Program Files (x86)\Python36-32\DLLs\tcl86t.dll', 
r'C:\Program Files (x86)\Python36-32\DLLs\tk86t.dll'] 
} 

setup(name = "main" , 
     version = "0.1" , 
     description = "" , 
     options={"build.exe":build_exe_options}, 
     executables = [Executable("main3.py", base=None, targetName="hexml.exe")]) 
+0

:(「?なぜ、このコードが動作していない」)、デバッグの助けを求めている_Questionsは、望ましい行動、特定の問題やエラーや問題でそれを再現するために必要な最短のコードを含める必要があります。自体_。その結果、外部ファイルロッカーから提供されるのではなく、質問にコードを追加する必要があります。今後の読者の便宜のために、この情報を質問に追加できますか? – halfer

答えて

1

私は最後に答えを見つけました。ファイルtcl86t.dlltk86t.dllを含むセットアップファイル内の行は何らかの理由で仕事をしていませんでした。パスの書式設定でエラーが発生している必要があります。

Python\Dllsフォルダから手動でコピーして、新しい実行可能ファイルが存在するexe.winフォルダに貼り付けていました。

その後、正しいパスを取得するsetup.pyスクリプトhereが見つかりました。 Vは今幸せです。公式近い上の理由から、

from cx_Freeze import setup, Executable 
import os 
import sys 

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__)) 
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6') 
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6') 

options = { 
    'build_exe': { 
     'include_files':[ 
      os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'), 
      os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), 
     ], 
    }, 
} 

setup(name = "main" , 
     version = "0.1" , 
     description = "" , 
     options=options, 
     executables = [Executable("main3.py", base=None, targetName="hexml.exe")]) 
関連する問題