1

我是 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

注意:在构建过程中,终端中不会出现任何错误。

启动应用程序后,我得到以下信息:

在此处输入图像描述

控制台输出:

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

有谁知道这是什么原因造成的?

4

1 回答 1

1

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

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

工作目录很可能位于<application>.App/Contents文件夹内的某个位置,因此如果您不将资源复制到 .App 捆绑包中,则可能需要上两三个目录才能找到资源(最佳做法是将所有资源都放在应用程序包)。

于 2013-02-22T02:15:50.693 回答