2017-01-03 9 views
0

Я создал скрипт python с использованием Tkinter и пытаюсь его упаковать с помощью Mac с Pyinstaller. Pyinstaller создает исполняемый файл, но когда я пытаюсь запустить его, говорит, что модуль Tkinter отсутствует. Я понимаю, что на SO есть несколько подобных вопросов, но ни одно из решений не сработало для меня.Pyinstaller No Module Tkinter

Вот вершина моего main.py сценария:

#!/usr/bin/env python 
import sys 
import os 
import traceback 
import json 
import time 
import Tkinter 

Вот моя версия pyinstaller:

$ pyinstaller --version 
3.3.dev0+483c819 

Я бегу pyinstaller с этой командой:

$ pyinstaller main.py 

Вот выход этой команды:

30 INFO: PyInstaller: 3.3.dev0+483c819 
30 INFO: Python: 3.4.3 
34 INFO: Platform: Darwin-15.6.0-x86_64-i386-64bit 
35 INFO: wrote /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/main.spec 
36 INFO: UPX is not available. 
38 INFO: Extending PYTHONPATH with paths 
['/Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container', 
'/Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container'] 
38 INFO: checking Analysis 
38 INFO: Building Analysis because out00-Analysis.toc is non existent 
38 INFO: Initializing module dependency graph... 
39 INFO: Initializing module graph hooks... 
40 INFO: Analyzing base_library.zip ... 
1395 INFO: Processing pre-find module path hook distutils 
2445 INFO: running Analysis out00-Analysis.toc 
2452 INFO: Caching module hooks... 
2454 INFO: Analyzing /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/main.py 
2499 INFO: Loading module hooks... 
2499 INFO: Loading module hook "hook-encodings.py"... 
2553 INFO: Loading module hook "hook-pydoc.py"... 
2553 INFO: Loading module hook "hook-xml.py"... 
2753 INFO: Loading module hook "hook-distutils.py"... 
2766 INFO: Looking for ctypes DLLs 
2766 INFO: Analyzing run-time hooks ... 
2773 INFO: Looking for dynamic libraries 
2836 INFO: Looking for eggs 
2836 INFO: Using Python library /Library/Frameworks/Python.framework/Versions/3.4/Python 
2838 INFO: Warnings written to /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/build/main/warnmain.txt 
2861 INFO: checking PYZ 
2861 INFO: Building PYZ because out00-PYZ.toc is non existent 
2861 INFO: Building PYZ (ZlibArchive) /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/build/main/out00-PYZ.pyz 
3175 INFO: checking PKG 
3176 INFO: Building PKG because out00-PKG.toc is non existent 
3176 INFO: Building PKG (CArchive) out00-PKG.pkg 
3185 INFO: Bootloader /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/PyInstaller/bootloader/Darwin-64bit/run 
3185 INFO: checking EXE 
3185 INFO: Building EXE because out00-EXE.toc is non existent 
3185 INFO: Building EXE from out00-EXE.toc 
3185 INFO: Appending archive to EXE /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/build/main/main 
3187 INFO: Fixing EXE for code signing /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/build/main/main 
3192 INFO: checking COLLECT 
3192 INFO: Building COLLECT because out00-COLLECT.toc is non existent 
3192 INFO: Building COLLECT out00-COLLECT.toc 

При запуске исполняемого файла открывается окно терминала с следующим выводом:

Last login: Tue Jan 3 11:35:51 on ttys004 
/Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/dist/main/main ; exit; 
[11:43:24][~]$ /Users/jonathanwilson/Documents/Projects/hr_digitization_tool/hr-records-management-tool-no-container/dist/main/main ; exit; 
Traceback (most recent call last): 
    File "main.py", line 7, in <module> 
ImportError: No module named 'Tkinter' 
Failed to execute script main 
logout 
Saving session... 
...copying shared history... 
...saving history...truncating history files... 
...completed. 

[Process completed] 

Я попытался запустить команду pyinstaller с --hidden-import Tkinter но до сих пор не работает. Я проверил раздел документации pyinstaller «When Things Go Wrong», но до сих пор не вижу решения.

+2

в python3, Tkinter был переименован в tkinter. –

+0

@BryanOakley, но этот вопрос отмечен 'python-2.7'. Вам также необходимо установить модуль Python, который можно выполнить через Pip. Запустите 'pip install tkinter' в командной строке. –

+0

да, но похоже, что pyinstaller выбирает python 3: '30 INFO: Python: 3.4.3' И я не думаю, что вы можете установить tkinter с pip. –

ответ

0

В итоге я обнаружил проблему, поэтому я решил поделиться ею. Как заметил Брайан Окли в комментариях к вопросу, pyinstaller использовал python3, мне нужен python2, поскольку я использовал версию python2 Tkinter (а также некоторые другие модули python2).

Я сделал pip uninstall pyinstaller и pip3 uninstall pyinstaller, чтобы убедиться, что полностью удалил pyinstaller. Затем я сделал pip2.7 install pyinstaller, чтобы установить его для python2. Затем Pyinstaller правильно использовал python2 и загрузил модуль Tkinter без проблем (так что у меня были некоторые проблемы, связанные с тем, что мой python2 не был добавлен на мой путь, но это не было связано с этой проблемой).