web-dev-qa-db-ja.com

import _tkinter#これが失敗した場合、PythonがTk用に構成されていない可能性があります

いくつかの初期情報:私のコンピューターにはWindows 10があり、すべてのプログラムは64ビットバージョンです。

私はtkinterを使用してpython(3.6.1)でゲームを書いています。今、それを.exeに変換したいと思います。cx_freeze(5.0.1)を使用して、ビルドを作成しました、しかしゲームを開こうとするとウィンドウが開いてすぐに閉じるので、cmdで開こうとすると次のエラーがポップアップ表示されます。

File "sliks.py", line 1, in <module>
File "C:\Users\Tinka\AppData\Local\Programs\Python\Python36\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.

次のようにtkinterのサポートを確認しました: https://wiki.python.org/moin/TkInter で、エラーは発生しません。

また、この件に関するいくつかの回答で述べられているように、pipでtk-devをインストールしようとしましたが、このメッセージが表示されても何も起こりません。

C:\WINDOWS\system32>pip install tk-dev
Collecting tk-dev
Could not find a version that satisfies the requirement tk-dev (from versions: )
No matching distribution found for tk-dev

私のコンピュータにはpython 2.xがなかったため、この場合のようにライブラリが混在することはありません: ImportError DLL load failed importing _tkinter

これは、何か問題がある場合に備えてcx_freezeに使用したsetup.pyファイルです。

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = r'C:\Users\Tinka\AppData\Local\Programs\Python\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Tinka\AppData\Local\Programs\Python\Python36\tcl\tk8.6'

base = None

setup(
    name = "Six",
    version = "0.1",
    options = {"build_exe": {"packages": ["tkinter"]}},
    executables = [Executable("sliks.py", base=base)]
    )

問題になる可能性のあるアイデアはありますか?この問題については未解決の問題がたくさんあることは知っていますが、ほとんどの解決策を試しましたが、うまくいきませんでした。

8
PircK

私はこれを自分で理解するのにかなり苦労しなければなりませんでした。これが誰かに役立つかどうかはわかりませんが、私にとってはうまくいきました。私が理解しているところによると、これらのエラーはcx_freezeがすべての依存関係を見つけることができないか、正しくない依存関係を取得しているときに生成されます。

最初に行ったのは、pythonディレクトリにドリルダウンすることでした。ここで非常に注意して、pythonコードが実行されている場所を確認してください。わからない場合は、IDEがこのパスを提供することがあります。複数のインストールまたは環境の場合、オフになっている可能性があります。

そこに入ると、エラーの原因となっているファイルを特定しました。私の状況では、それはtkinter依存でした。 tcl86.dllとtk86.dllが問題でした。追加した行が表示されます。それから私のロゴは実際にそれを始めたので、それを追加する必要がありました。今ではうまくいきます。これが私のsetup.pyファイル(cx_freeze config)のサンプルです。

from cx_Freeze import setup, Executable
import sys
import os

includes = []
include_files = [r"C:\Users\Ace\AppData\Local\Programs\Python\Python36\DLLs\tcl86t.dll",
                 r"C:\Users\Ace\AppData\Local\Programs\Python\Python36\DLLs\tk86t.dll",
                 r"C:\Users\Ace\Desktop\IPNV\KP_App\FML\logo1.gif"]
os.environ['TCL_LIBRARY'] = r'C:\Users\Ace\AppData\Local\Programs\Python\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Ace\AppData\Local\Programs\Python\Python36\tcl\tk8.6'
base = 'Win32GUI' if sys.platform == 'win32' else None


setup(name='KpApp', version='0.9', description='KP Report App',
      options={"build_exe": {"includes": includes, "include_files": include_files}},
      executables=[Executable(r'C:\Users\Ace\Desktop\IPNV\KP_App\FML\firstapp.py', base=base)])
12
Joe