Pyinstaller 生成的 exe 无法正常工作 [英] Pyinstaller generated exe doesn't work properly

查看:33
本文介绍了Pyinstaller 生成的 exe 无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试打包我编写的包含 GUI 的 Python 程序/脚本(pastebin 链接)使用 tkinter 模块.我决定使用 Pyinstaller,据他们说它支持 Python 3.7.

I'm trying to package a python program/script (pastebin link) I wrote which includes a GUI using the tkinter module. I decided to use Pyinstaller and according to them it supports Python 3.7.

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

Currently, trying to run pyinstaller seems to generate no issues when actually packaging. It is after when I try to run the executable that it fails. One I generate a one file variant of the executable, it simply opens a command prompt and hangs. When I do the non one file command, it opens and closes immediately, but gives an error output which I can't see due to how quick it closes. I opened up the executable directly in the cmd to get around that, and it gives me this error:

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 目录复制到跟踪指定的一个(显然它应该不必那样).现在我得到的错误是这样的:

I don't know if it's supposed to be looking for the python37.dll in this folder, but nevertheless, I had the bright idea to copy the dll from the python directory into the specified one by the trace (obviously it shouldn't have to be like that). And now the error I get is this:

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

无休止的谷歌搜索并没有产生任何具体的结果.以下是一些我认为可能会有所帮助的相关链接.

An endless amount of googling hasn't yielded anything concrete. Here are some relevant links that I thought might help.

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

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

PyInstaller:没有名为 Tkinter 的模块"

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

pyinstaller 加载 python27.dll 错误

这是我的规范文件:

# -*- 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')

推荐答案

遇到了同样的问题,但后来意识到我无意中尝试执行 build 文件夹中的文件而不是 dist 文件夹.

Had the same issue but then realized that I was inadvertently trying to execute the file in the build folder instead of the dist folder.

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

Looks like you might be making the same mistake from your traceback so see if using the executable in dist doesn't fix it for you

这篇关于Pyinstaller 生成的 exe 无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆