python - PyInstaller 应用程序无法在 Mac 上打开

标签 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 字符串。

最佳答案

可以在此处找到解释和解决方法:https://github.com/pyinstaller/pyinstaller/issues/3753

简而言之:PyInstaller 中存在错误处理 OS X 下的 Tcl/Tk 的错误。更改 hook-_tkinter.py 中的代码使其对我有用。

关于python - PyInstaller 应用程序无法在 Mac 上打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51847801/

相关文章:

python - 如何使 Tkinter 条目焦点验证不仅仅在第一次发生?

python - 如果条目具有一定长度,则将条目添加到列表框

python - ArcGis 上的 Python 出现 UnboundLocalError

python - 如何在 python3.6 中计算 for 循环中的指数?

Python 将字符连接到列表

linux - 无法连接到 vscode 服务器,scp : No such file or directory

python - 与sqlite3并发写入

c# - 如何在 MonoMac 中制作一个只有托盘图标的 C# 应用程序(无停靠图标)?

c++ - Boost 正则表达式抛出复杂性异常,而 std::regex 则不会

Python 存储用户输入