PyInstaller App无法在Mac上打开

时间:2018-08-14 18:33:54

标签: python macos tkinter pyinstaller

我正在尝试为我编写的程序创建一个应用程序。我在Windows上执行此操作没有问题,但是我已经尝试了一个星期以使OSX版本正常工作。这是我的终端的样子:

Thomass-iMac:gene_expression Tomallama$ python3 --version
Python 3.6.6
Thomass-iMac:gene_expression Tomallama$ python3 -m PyInstaller -- 
onefile gene_expression.py
190 INFO: PyInstaller: 3.3.1
191 INFO: Python: 3.6.6
196 INFO: Platform: Darwin-15.6.0-x86_64-i386-64bit
197 INFO: wrote 
/Users/Tomallama/Desktop/Programs/gene_expression/gene_expression.spec
200 INFO: UPX is not available.
202 INFO: Extending PYTHONPATH with paths
['/Users/Tomallama/Desktop/Programs/gene_expression',
 '/Users/Tomallama/Desktop/Programs/gene_expression']
202 INFO: checking Analysis
202 INFO: Building Analysis because out00-Analysis.toc is non existent
202 INFO: Initializing module dependency graph...
203 INFO: Initializing module graph hooks...
205 INFO: Analyzing base_library.zip ...
3787 INFO: running Analysis out00-Analysis.toc
3794 INFO: Caching module hooks...
3798 INFO: Analyzing 
/Users/Tomallama/Desktop/Programs/gene_expression/gene_expression.py
4017 INFO: Loading module hooks...
4017 INFO: Loading module hook "hook-_tkinter.py"...
4020 ERROR: Tcl/Tk improperly installed on this system.
4020 INFO: Loading module hook "hook-encodings.py"...
4103 INFO: Loading module hook "hook-pydoc.py"...
4104 INFO: Loading module hook "hook-xml.py"...
4408 INFO: Looking for ctypes DLLs
4408 INFO: Analyzing run-time hooks ...
4411 INFO: Including run-time hook 'pyi_rth__tkinter.py'
4418 INFO: Looking for dynamic libraries
4510 INFO: Looking for eggs
4510 INFO: Using Python library /Library/Frameworks/Python.framework/Versions/3.6/Python
4512 INFO: Warnings written to /Users/Tomallama/Desktop/Programs/gene_expression/build/gene_expression/warngene_expression.txt
4545 INFO: Graph cross-reference written to /Users/Tomallama/Desktop/Programs/gene_expression/build/gene_expression/xref-gene_expression.html
4555 INFO: checking PYZ
4555 INFO: Building PYZ because out00-PYZ.toc is non existent
4555 INFO: Building PYZ (ZlibArchive) /Users/Tomallama/Desktop/Programs/gene_expression/build/gene_expression/out00-PYZ.pyz
4938 INFO: Building PYZ (ZlibArchive) /Users/Tomallama/Desktop/Programs/gene_expression/build/gene_expression/out00-PYZ.pyz completed successfully.
4944 INFO: checking PKG
4944 INFO: Building PKG because out00-PKG.toc is non existent
4944 INFO: Building PKG (CArchive) out00-PKG.pkg
7984 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully.
7987 INFO: Bootloader /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyInstaller/bootloader/Darwin-64bit/run
7987 INFO: checking EXE
7987 INFO: Building EXE because out00-EXE.toc is non existent
7987 INFO: Building EXE from out00-EXE.toc
7988 INFO: Appending archive to EXE /Users/Tomallama/Desktop/Programs/gene_expression/dist/gene_expression
8038 INFO: Fixing EXE for code signing /Users/Tomallama/Desktop/Programs/gene_expression/dist/gene_expression
8051 INFO: Building EXE from out00-EXE.toc completed successfully.

然后,当我进入dist文件夹并运行应用程序时,会发生这种情况。

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py", line 28, in <module>
    raise FileNotFoundError('Tcl data directory "%s" not found.' % (tcldir))
FileNotFoundError: Tcl data directory "/var/folders/2t/lv424fgn1ml7v_6xs6lkr4hh0000gn/T/_MEIPrF3eT/tcl" not found.
[6771] Failed to execute script pyi_rth__tkinter
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

就像我说的那样,此过程的工作原理只有在Windows上运行时才能找到。但是我不知道为什么它不能在Mac上运行。我还需要使用Python 3.6保留它,因为代码中包含f字符串。

2 个答案:

答案 0 :(得分:0)

有一个第三方应用程序Platypus,它将把有效的python代码转换为Mac应用程序。 Platypus易于使用,并且可以与其他脚本语言(如Perl,Ruby,Swift等)一起使用。

答案 1 :(得分:0)

说明和解决方法可以在这里找到:https://github.com/pyinstaller/pyinstaller/issues/3753

简而言之:PyInstaller中有一个错误,它在OS X下无法正确处理Tcl / Tk。更改hook-_tkinter.py中的代码对我有用。

相关问题