我正在尝试使用pyinstaller为我的python程序制作可执行文件。
我已经尝试了以下命令pyinstaller --debug --onefile run.py
,pyinstaller --onefile -w run.py
。
当使用debug选项运行时,程序将启动并开始为程序找到必要的导入。然后,它执行我放置在程序开头的打印语句。立即在print语句之后开始运行destroy语句。然后,命令窗口关闭,程序永不打开。
如果在不使用调试选项的情况下运行程序,程序将加载约十秒钟,然后出现Windows消息框,并显示错误“无法执行脚本运行”。在禁用调试选项的情况下,不会出现此消息框。
我正在为此程序使用tkinter。有一些想法认为tkinter可能是问题,但没有真正的证据,只是预感。欢迎任何意见,谢谢。
最佳答案
有一个pyinstaller bug试图导入C指针,这被标识为误报,因为尽管它们不是直接导入的,但使用执行程序的系统的API,可以通过安装发行版来解决适用于Windows 10之前版本的计算机的C ++软件包,但这是一个小问题
至于执行问题,您应该检查/执行以下操作:
为程序name.py
创建一个SPEC文件
确认所选的选项与SPEC文件匹配
验证哪些模块是用python编写的,哪些模块具有指向C的二进制链接
图书馆
将找到的二进制文件添加到SPEC文件中,以便将它们打包在目录中。
验证是否将所有第三方库都添加到了SPEC文件或主执行文件中,也就是说,如果name.py
并将文件导入到同一目录:Name2.py
中,并且没有出现的库已导入到其中在name.py
中,可能不会导入该库,并且可能导致任何错误。
将程序编译到目录后,请验证一切正常,如果失败,请进行手动修复,列出它们,然后尝试将其添加到SPEC文件或name.py中,以便下次查找时进行编译您的项目,运行没有问题,
建议,尝试使用分发目录,它将减少您的麻烦并加快程序的加载,缩短开发时间,尝试使用启动器的模型,仅在调用了主函数的启动器时进行编译name .py
并导入必要的库。因此,每次修改name.py
时,您都会立即注意到更改。
一旦一切运行完毕,您可以决定退出启动器模型还是将所有内容传递到单个文件中
关于python - pyinstaller可执行文件崩溃了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56876619/