我使用py2app打包的Python程序,以便程序query_agent.py
成为query_agent.app
。我有一个Java程序,它使用以下命令启动query_agent.app
:
打开./query_agent.app --args abs_path1 abs_path2
,其中abs_path1
和abs_path2
是字符串参数。
我将所有内容放在一个文件夹中,当我启动最终启动query_agent.app
的JAR时,一切都按预期完美运行。
所以我将此文件夹压缩,以便将其分发给其他人。在发送之前,我将拉链放在闪存驱动器上并将其解压缩到另一台Mac计算机上进行测试。同样,即使解压缩,程序也能按预期工作。
但是,当我将邮件作为邮件附件发送到电子邮件中,或者将邮件上传到MediaFire等文件托管网站时,该程序在解压缩后不再有效。当我在任何Mac计算机上解压缩下载的zip文件时,右键单击并打开,我收到消息:
query_agent错误
当我打开控制台时,它会显示错误原因:
STATS_FILE_LOCATION
指向我要写入的文件。该文件位于query_agent.app/Contents/Resources/resources。提醒一下,如果我在上传之前使用了zip版本,这样可以正常工作。
似乎主要错误显示在最后一行
OSError:[Errno 30]只读文件系统:'resources / status.txt'
我注意到的第一件事是它在/ private / var / folder / ...位置找到我的源文件。我相信这是一个临时位置,这可能是我得到“只读文件系统”错误的原因。我从来没有打算从我的主应用程序文件夹之外的任何位置读取或写入任何内容。
我也收到了消息:
检测到< private>的缺失约束。它无法放置,因为没有足够的约束来完全定义大小和原点。添加缺少的约束,或设置translatesAutoresizingMaskIntoConstraints = YES,并为您生成约束。如果此视图在macOS 10.12及更高版本上手动布局,您可以选择不从覆盖中调用[super layout]。在DETECTED_MISSING_CONSTRAINTS上设置断点以进行调试。此错误仅记录一次。
所以我的问题是:为什么我的程序无法上传,下载,解压缩,然后尝试运行?
它在我上传的任何Mac电脑上传之前都有效,所以它被拉链的事实不是问题。我希望这些模糊的错误消息可以提供一些提示,说明为什么会发生这种情况。任何帮助解决这个问题将不胜感激。