首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyinstaller生成的exe无法正常工作

Pyinstaller生成的exe无法正常工作
EN

Stack Overflow用户
提问于 2018-10-10 04:09:42
回答 2查看 4.3K关注 0票数 5

我正在尝试打包我编写的python程序/脚本(pastebin link),其中包括使用tkinter模块的图形用户界面。我决定使用Pyinstaller,根据他们的说法,它支持Python 3.7。

目前,尝试运行pyinstaller在实际打包时似乎没有产生任何问题。在我尝试运行可执行文件之后,它就失败了。当我生成可执行文件的一个文件变体时,它只是打开一个命令提示符,然后挂起。当我执行non one file命令时,它会立即打开和关闭,但会给出一个错误输出,由于它关闭得太快,我看不到它。我直接在cmd中打开了可执行文件来解决这个问题,它给出了这个错误:

代码语言:javascript
复制
C:\Users\mqian\Desktop\CGIProject\autoprimercode\windowsversion\build\windowsaut
oprimer>windowsautoprimer.exe
Error loading Python DLL 'C:\Users\mqian\Desktop\CGIProject\autoprimercode\windo
wsversion\build\windowsautoprimer\python37.dll'.
LoadLibrary: The specified module could not be found.

我不知道它是否应该在这个文件夹中查找python37.dll,但尽管如此,我还是有了一个好主意,通过跟踪将这个dll从python目录复制到指定的目录中(显然它不应该是这样的)。现在我得到的错误是:

代码语言:javascript
复制
C:\Users\mqian\Desktop\CGIProject\autoprimercode\windowsversion\build\windowsaut
oprimer>windowsautoprimer.exe
Traceback (most recent call last):
  File "site-packages\PyInstaller\loader\rthooks\pyi_rth__tkinter.py", line 28,
in <module>
FileNotFoundError: Tcl data directory "C:\Users\mqian\Desktop\CGIProject\autopri
mercode\windowsversion\build\windowsautoprimer\tcl" not found.
[6600] Failed to execute script pyi_rth__tkinter

无穷无尽的谷歌搜索并没有产生任何具体的结果。这里有一些我认为可能会有帮助的相关链接。

https://github.com/pyinstaller/pyinstaller/issues/2149

https://www.xoolive.org/2015/09/09/issues-on-loading-dlls-with-pyinstaller.html

PyInstaller: "No module named Tkinter"

https://github.com/pyinstaller/pyinstaller/issues/2495

Error loading python27.dll error for pyinstaller

下面是我拥有的specfile:

代码语言:javascript
复制
# -*- mode: python -*-

block_cipher = None


a = Analysis(['windowsautoprimer.py'],
             pathex=['C:\\Users\\mqian\\Desktop\\CGIProject\\autoprimercode\\windowsversion'],
             binaries=[],
             datas=[],
             hiddenimports=['tkinter', 'Tkinter'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='windowsautoprimer',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='windowsautoprimer')
EN

回答 2

Stack Overflow用户

发布于 2019-01-10 07:15:58

有相同的问题,但后来意识到我无意中试图执行build文件夹中的文件,而不是dist文件夹中的文件。

看起来您可能正在从您的回溯中犯同样的错误,所以看看在dist中使用可执行文件是否不能修复它

票数 10
EN

Stack Overflow用户

发布于 2020-09-03 17:49:49

请在命令中使用--onefile选项重新创建exe。它不会要求您提供python37.dll

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52728609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档