Pyinstaller生成的exe无法在另一台计算机上运行

时间:2016-08-14 02:08:23

标签: python-2.7 pyinstaller

我的电脑操作系统是64位获胜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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

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

  1. 找到您当地的Python安装。 (%LocalAppData%\Programs\Python
  2. 制作丢失文件夹(...\Python36-32\tcl\<missing_folder>
  3. 的副本
  4. 将副本移至您应用的tcl文件夹(...\dist\<app_name>\tcl\<missing_folder>
  5. 解决方法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)为我解决了这个问题。