【问题标题】:Pyinstaller-generated exe cannot run on another computerPyinstaller 生成的 exe 无法在另一台计算机上运行
【发布时间】:2016-12-20 16:24:03
【问题描述】:

我的电脑操作系统是 64 位 win 10。Python 2.7,32 位。

我的代码是plot.py,简单如下:

import matplotlib.pyplot as plt
import FileDialog
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()

当我执行pyinstaller -F plot.py 时,生成的 plot.exe 在我当前的计算机上按预期工作。但是,如果我尝试在另一台 32 位 Windows 7 计算机上运行它,我会收到错误消息:

Traceback (most recent call last):
  File "site-packages\GUI_tempCtrl\plot.py", line 3, in <module>
  File "lib\site-packages\matplotlib\pyplot.py", line 3147, in plot
  File "lib\site-packages\matplotlib\pyplot.py", line 928, in gca
  File "lib\site-packages\matplotlib\pyplot.py", line 578, in gcf
  File "lib\site-packages\matplotlib\pyplot.py", line 527, in figure
  File "lib\site-packages\matplotlib\backends\backend_tkagg.py", line 84, in new
_figure_manager
  File "lib\site-packages\matplotlib\backends\backend_tkagg.py", line 92, in new
_figure_manager_given_figure
  File "lib\lib-tk\Tkinter.py", line 1814, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
    C:/Users/ADMINI~1/AppData/Local/Temp/lib/tcl8.5 C:/Users/Administrator/lib/t
cl8.5 C:/Users/lib/tcl8.5 C:/Users/Administrator/library C:/Users/library C:/Use
rs/tcl8.5.15/library C:/tcl8.5.15/library



This probably means that Tcl wasn't installed properly.

Failed to execute script plot

【问题讨论】:

标签: python-2.7 pyinstaller


【解决方案1】:

您可以尝试将 pyinstaller 降级到 v3.1 并在您的第一台计算机上重建您的 exe 文件来解决此问题。

或者,您可以通过将 TCL_LIBRARY 环境变量设置为 C:\Python27\tcl\tcl8.5\(或 tcl8.5 所在的任何位置)在第二台计算机上修复它

【讨论】:

  • 哇,成功了!!!!我将 Pyinstaller 3.2 降级到 3.1,并将 setuptools 降级到 19.2。非常感谢朋友们~~
【解决方案2】:

PyInstaller 有a known issue 与 Windows 7 和 Windows XP 上的 Tkinter 应用程序。

由于这个问题已经两年没有解决了,我继续前进并started a bounty。在问题得到解决之前,您可以尝试一些解决方法:

解决方法 1 - 手动复制丢失的文件

a related issue 中所述,您可以从本地 Python 安装中手动复制丢失的文件。

  1. 找到您的本地 Python 安装。 (%LocalAppData%\Programs\Python)
  2. 复制丢失的文件夹 (...\Python36-32\tcl\&lt;missing_folder&gt;)
  3. 将副本移动到应用程序的 tcl 文件夹 (...\dist\&lt;app_name&gt;\tcl\&lt;missing_folder&gt;)

解决方法 2 - 使用 --onefile 运行

--onefile 模式下运行 PyInstaller 似乎可以避免这个问题。

但请注意,以单文件模式运行会增加启动时间。

解决方法 3 - 降级到 PyInstaller 3.1.0

pip install pyinstaller==3.1.0

According to ugoertz,降级到 PyInstaller 3.1.0 解决了这个问题。

降级到 3.1.0(由于#1941 中描述的问题,还将 setuptools 降级到 19.2)为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2014-01-21
    相关资源
    最近更新 更多