PyInstaller fails on Windows 7: “Can't find a usable init.tcl”

后端 未结 3 555
一生所求
一生所求 2020-12-12 03:39

I have a basic Python script which uses Tkinter.

from Tkinter import Tk
from tkFileDialog import askdirectory
Tk().withdraw()
print askdirectory()

相关标签:
3条回答
  • 2020-12-12 03:42

    This is a known issue with PyInstaller and Tkinter on Windows 7 64-bit machines. There is an issue report in the GitHub repository of PyInstaller.

    All the way at the bottom this issue was referenced from another issue, namely this one which says that downgrading to PyInstaller 3.1.0 helps other people solve the issue.

    pip install pyinstaller==3.1.0
    

    I myself have been able to confirm this using a Virtual Machine.

    0 讨论(0)
  • 2020-12-12 04:03

    In your case you will find that there is Tcl8.X folder in python directory, it is at a place which is not mentioned in [list of directories], you mentioned in your question. Just pick any of the paths from those directory listings (preferably /lib ).

    That will allow python to find Tcl library files and it will work.

    Note: DO NOT MOVE FILES, JUST COPY THEM.

    0 讨论(0)
  • 2020-12-12 04:07

    As RedPhantom mentioned, PyInstaller has a known issue with Tkinter applications on Windows 7 and Windows XP.

    Since this issue has gone unfixed for two years, I've gone ahead and started a bounty on Bountysource. Until the issue is fixed, there are a few workarounds you can try:

    Workaround 1 - Manually copy missing files

    As mentioned in a related issue, you can manually copy the missing files from your local Python installation.

    1. Find your local Python installation. (%LocalAppData%\Programs\Python)
    2. Make a copy of the missing folder (...\Python36-32\tcl\<missing_folder>)
    3. Move the copy to your application's tcl folder (...\dist\<app_name>\tcl\<missing_folder>)

    Workaround 2 - Run with --onefile

    Running PyInstaller in --onefile mode seems to avoid this issue.

    However, note that running in single file mode will increase startup time.

    Workaround 3 - Downgrade to PyInstaller 3.1.0

    pip install pyinstaller==3.1.0
    

    According to ugoertz, downgrading to PyInstaller 3.1.0 resolved the issue.

    Downgrading to 3.1.0 (and also downgrading setuptools to 19.2 because of the problem described in #1941) fixed the issue for me.

    0 讨论(0)
提交回复
热议问题