在使用子进程的脚本上使用Py2App后接收启动错误

时间:2013-02-21 23:09:35

标签: python macos py2app

我是OSX操作系统的新手,我只想尝试从Python启动一段java代码。

我正在使用以下代码:

import os 
import subprocess

subprocess.call([os.getcwd() + '/contents/home/bin/java', 
                '-jar', 
                os.getcwd() + '/Whoo.jar'])

当作为脚本运行时,它完全按预期工作。但是,当我用Py2App打包所有内容时,我在尝试运行应用程序时突然出错。

应用程序的构建过程:

py2applet --make-setup test.py

然后,

python setup.py py2app -A

注意:在构建过程中终端中没有注意到错误。

启动应用程序后,我得到以下内容:

enter image description here

控制台输出:

2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]    argvemulator warning: fetching events failed
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]    Traceback (most recent call last):
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]      File "/Volumes/FLASH_DRIVE/App/start.app/Contents/Resources/__boot__.py", line 342, in <module>
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]        _run()
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]      File "/Volumes/FLASH_DRIVE/App/start.app/Contents/Resources/__boot__.py", line 335, in _run
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]        exec(compile(source, script, 'exec'), globals(), globals())
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]      File "/Volumes/FLASH_DRIVE/App/start.py", line 7, in <module>
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]        os.getcwd() + '/Whoo.jar'])
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 493, in call
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]        return Popen(*popenargs, **kwargs).wait()
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]        errread, errwrite)
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]        raise child_exception
2/21/13 6:08:06 PM  [0x0-0x32c32c].org.pythonmac.unspecified.start[5230]    OSError: [Errno 2] No such file or directory
2/21/13 6:08:06 PM  start[5230] start Error
2/21/13 6:08:10 PM  com.apple.launchd.peruser.501[94]   ([0x0-0x32c32c].org.pythonmac.unspecified.start[5230]) Exited with exit code: 255

任何人都知道造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

我猜想py2app转换后的应用程序下的当前工作目录与直接调用它时不同。

尝试记录os.getcwd()的值以查看它从

开始的位置

工作目录很可能位于<application>.App/Contents文件夹中的某个位置,因此如果您没有将资源复制到.App软件包中,您可能需要上两个或三个目录才能找到资源(最好实践是在Application bundle中包含所有资源。