0

我将本教程(从 2013 年开始)与 PyObjC(http://blog.adamw523.com/os-x-cocoa-application-python-pyobjc/)一起使用。

但是,使用后运行python setup.py py2app时,运行“dist/RocketGui.app/Contents/MacOS/RocketGui”时出现以下错误:

Mar 19 20:43:19  RocketGui[1863] <Notice>: Traceback (most recent call last):
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "/Users/*******/Desktop/Projects/Rocket/Software/dist/RocketGui.app/Contents/Resources/__boot__.py", line 136, in <module>
Mar 19 20:43:19  RocketGui[1863] <Notice>:     _run()
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "/Users/*******/Desktop/Projects/Rocket/Software/dist/RocketGui.app/Contents/Resources/__boot__.py", line 121, in _run
Mar 19 20:43:19  RocketGui[1863] <Notice>:     exec(compile(source, path, 'exec'), globals(), globals())
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "/Users/*******/Desktop/Projects/Rocket/Software/dist/RocketGui.app/Contents/Resources/RocketGui.py", line 1, in <module>
Mar 19 20:43:19  RocketGui[1863] <Notice>:     from Cocoa import *
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "Cocoa/__init__.pyc", line 8, in <module>
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "objc/__init__.pyc", line 32, in <module>
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "objc/_bridgesupport.pyc", line 13, in <module>
Mar 19 20:43:19  RocketGui[1863] <Notice>:   File "pkg_resources/__init__.pyc", line 49, in <module>
Mar 19 20:43:19  RocketGui[1863] <Notice>: ImportError: No module named moves
Mar 19 20:43:19  RocketGui[1863] <Notice>: 2016-03-19 20:43:19.989 RocketGui[1863:8841237] RocketGui Error

我做了以下事情:

pip install -U six

但是,在网上一探究竟,似乎 PyObjC 可能不再受支持。有没有解决这个问题或者我应该切换框架(我更喜欢我可以用 pip 安装的东西)?

4

1 回答 1

0

您是否尝试将依赖项添加到setup.py? 您可以将其添加到includespackages,例如:

setup(
    app=['main.py'],
    name="AppName",
    data_files=['en.lproj'],
    setup_requires=['py2app'],
    options=dict(py2app=dict(iconfile='en.lproj/icon.icns',
                             includes=['lxml.etree', 'lxml._elementpath', 'pdflib_py', 'Image', 'unirest'],
                             packages=['packageName']
                             )   
                 )   
)

也可以像这样以别名模式运行应用程序:

python setup.py py2app -A

这样,系统上安装的软件包就会被使用,这在开发过程中会更快。

于 2016-04-21T14:43:08.790 回答