2017-04-23 25 views
5

Kilka początkowych informacji: Mam Windows 10 na moim komputerze, a wszystkie programy są wersjami 64-bitowymi.import _tkinter # Jeśli to się nie powiedzie, twój Python może nie być skonfigurowany dla Tk

Piszę grę w python (3.6.1) za pomocą tkintera, a teraz chciałbym przekonwertować go do .exe. Użyłem cx_freeze (5.0.1) i stworzyłem kompilację, ale kiedy próbuję otworzyć grę, otwiera się okno, a następnie natychmiast się zamyka. Dlatego starałem się go otworzyć poprzez cmd i następujący błąd wyskakuje:

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. 

Sprawdziłem tkinter wsparcia jak mówi tutaj: https://wiki.python.org/moin/TkInter i występuje żaden błąd.

Również próbowałem zainstalować tk-dev z pip jak mówi w niektórych odpowiedzi na ten temat, ale nic się nie dzieje, jak otrzymuję komunikat:

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 

ja nigdy nie miałem żadnych 2.x Pythona na moim komputer, więc nie ma się mieszane biblioteki jak w tym przypadku: ImportError DLL load failed importing _tkinter

Oto mój plik setup.py Użyłem do cx_freeze w przypadku coś jest nie tak z tym:

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)] 
    ) 

Jakieś pomysły, co może być problemem? Wiem, że istnieje wiele otwartych pytań na ten temat, ale wypróbowałem większość rozwiązań i nie miałem szczęścia.

+0

Mam również ten sam problem. Zrozumiałeś? – Joe

+0

Nie, przepraszam. Przestałem próbować po tym, jak spędziłem zbyt wiele godzin na tym. – PircK

+0

Udało mi się to zrozumieć. W rzeczywistości nie jest tak źle, tylko sprowadza się do zidentyfikowania tego, czego brakuje, i ręcznego wskazywania go. – Joe

Odpowiedz

4

Musiałem bardzo się bić, aby wymyślić ten jeden dla siebie. Nie jestem pewien, czy to pomoże każdemu, ale zadziałało. Z tego co wiem, te błędy są generowane, gdy cx_freeze albo nie może znaleźć wszystkich zależności, albo pobiera niewłaściwe.

Pierwszą rzeczą, którą zrobiłem było drążenie w dół do mojego katalogu Pythona. BĄDŹ BARDZO ostrożny i upewnij się, że szukasz miejsca, w którym wykonywany jest twój kod Pythona. Twój IDE może podać ci tę ścieżkę, jeśli jej nie znasz. W przypadku wielu instalacji lub środowisk możesz być wyłączony.

Po stwierdzeniu, który plik powoduje błąd. Dla mojej sytuacji była to zależność od tkintera. tcl86.dll i tk86.dll były problemem. Możesz zobaczyć linie, które dodałem. Wtedy moje logo faktycznie zaczęło to robić, więc musiałem to dodać. Teraz działa świetnie. Oto przykład mojego pliku setup.py (konfiguracja cx_freeze).

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)])