使用此处的简单说明https://www.metachris.com/2015/11/create-standalone-mac-os-x-applications-with-python-and-py2app/
我现在有一个应用程序文件在dist。但是,当我打开它时,除了
之外,我得到一个警告应用程序错误,打开控制台或终止
我的程序是一个python文件,可导入许多模块(opencv
,tkinter
等等。当我从控制台(python app.py
)运行它时效果很好,打开我的tkinter
窗口等等。
首先,可能出现什么问题?而且,这实际上应该如何工作,应用程序是否也包含所有opencv?如何将python模块包含在这样的便携式应用程序中?
感谢您的帮助/指导。
答案 0 :(得分:1)
那不止一个Q!
没关系。
当这样的应用程序启动时,它运行Apple的内置Python并使用其标准库。
应包含任何非标准模块,但经常会遇到问题。
然后将整个解释器与标准库以及您导入的任何其他内容打包在一起。
这通常像魅力一样,虽然它产生了更大的应用程序。但是现在好几天,它不是这样的灾难。
它是如何工作的? py2app,py2exe和类似的工具检查python代码树的import语句。
然后找到所有发现的依赖项。
有问题的部分是使用 import ()或reload()函数的动态导入。对于这样的模块,你必须专门告诉py2app打包它们。
有时在您的应用中添加静态导入就足够了,如:
if 0:
import site
OpenCV,嗯,祝你好运!它有时候会让生活的噩梦正确地链接到C ++的路径,我希望将它与Python一起打包到应用程序中。
我不使用它,所以我不知道你有多麻烦。
使用/Applications/Utilities/Console.app查看打包应用程序后发送到stderr / stdout的任何错误和回溯。你可能会在那里找到一些有用的信息。
但我建议您下载自定义Python解释器并制作完整的独立应用程序。 这不是什么大不了的事。只需使用内置的一个调用setup.py即可。
然后搜索你必须添加到setup.py的内容,以正确打包OpenCV,如果这是你的麻烦的原因。