2016-12-19 5 views
2

Я хочу сделать исполняемый файл, но ervery time Я запустил .exe, он пишет ImportError: No module named 'tkinter', и все, что я читал на Stackowerflow, не помогает мне!ImportError: Нет модуля с именем 'tkinter' после pyInstaller

Моя программа питон проста (ОДУ решатель) и просит только:

from math import* 
from pylab import* 
import numpy as np 

import matplotlib 
import numpy as np 
import matplotlib.pyplot as plt 

Я вставить копию моего prog.py в C:\Python\Scripts папку, где pyInstaller есть. Я вычисляю командную строку pyinstaller -F eulersolver.py, это создает prog.exe в папке dist. Когда я запускаю этот код у меня есть

ImportError: No module named 'tkinter' 
Failed to execute script prog 

Но моя программа не использовать этот модуль ... у вас есть какие-либо предложения или помочь мне?

OS: Windows64

Python: 3,5 для Win64

Примечание: Я уже unistall/установить Python 3 раза сегодня (после прочтения документации по этому спиртые и за рубежом).

Примечание 2: Я использую Python только для научных проблем. Я не ученый, поэтому будьте добры ко мне, объясняя, компьютерный материал: S

+0

EDIT (потому что я не могу редактировать свои собственные сообщения -_-): в командной строке на самом деле 'pyinstaller -F prog.py' – John

+0

' matplotlib' использовать 'tkinter' для отображения окна с сюжетом. – furas

+0

попытайтесь «импортировать tkinter», возможно, тогда он также назначит модуль tkinter. Или прочитайте, как настроить конфигурацию перед запуском 'pyinstaller'. 'tkinter' использует внешнюю' dll' с языком 'tcl' и его gui' tk', поэтому, возможно, вам нужно вручную добавить в конфигурационную информацию о 'tcl.dll' и' tk.dll' (я не использую Windows, поэтому я не знаю, является ли это 'tcl.dll' и' tk.dll') – furas

ответ

1

Вы должны использовать скрытую импортировать
pyinstaller eulersolver.py --hidden-import=tkinter -y

2

НАКОНЕЦ РАБОТАЛ ЗА pyinstaller -F --hidden-import=tkinter --hidden-import=tkinter.filedialog prog.py Спасибо большое !!!

0

Проблема в том, что pyinstaller не увидит импорт второго уровня. Поэтому, если вы импортируете модуль A, pyinstaller видит это. Но любой дополнительный модуль, который импортируется в A, не будет видно.

Нет необходимости что-либо менять в сценариях python. Вы можете напрямую добавить недостающий импорт в спецификационный файл (prog.spec в вашем случае). Просто измените следующую строку:

hiddenimports=[], 

к

hiddenimports=["tkinter"], 

После этого запуска pyinstaller prog.spec создать prog.exe.