2015-10-14 89 views
0

我试图测试py2app的功能,用于创建独立的mac应用程序。我为我的测试代码生成了一个名为'hello.py'的设置文件。py2app问题,得到错误

""" 
This is a setup.py script generated by py2applet 

Usage: 
python setup.py py2app 
""" 

from setuptools import setup 

APP = ['hello.py'] 
DATA_FILES = [] 
OPTIONS = {'argv_emulation': True} 

setup(
    app=APP, 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS}, 
    setup_requires=['py2app'], 
) 

而我试图做一个简单的应用程序,只是说一个图形用户界面的hello世界。这里是代码hello.py

import sys 
from PyQt4 import QtGui 
from PyQt4 import QtCore 

app = QtGui.QApplication(sys.argv) 

widget = QtGui.QLabel("Hello World") 
widget.show() 


app.exec_() 

上面的脚本运行得很好,但是当我尝试使用py2app,我得到一些错误。当我运行“蟒蛇setup.py py2app”

WARNING: ImportError in sip recipe ignored: No module named py2app-0 
WARNING: ImportError in sip recipe ignored: No module named Sphinx-1 
WARNING: ImportError in sip recipe ignored: No module named decorator-4 
WARNING: ImportError in sip recipe ignored: No module named altgraph-0 
WARNING: ImportError in sip recipe ignored: No module named matplotlib-1 
WARNING: ImportError in sip recipe ignored: No module named alabaster-0 
WARNING: ImportError in sip recipe ignored: No module named modulegraph-0 
WARNING: ImportError in sip recipe ignored: No module named Jinja2-2 
WARNING: ImportError in sip recipe ignored: No module named jedi-0 
WARNING: ImportError in sip recipe ignored: No module named pickleshare-0 
WARNING: ImportError in sip recipe ignored: No module named macholib-1 
WARNING: ImportError in sip recipe ignored: No module named Babel-1 
WARNING: ImportError in sip recipe ignored: No module named sphinx_rtd_theme-0 
WARNING: ImportError in sip recipe ignored: No module named pip-7 
WARNING: ImportError in sip recipe ignored: No module named wheel-0 
WARNING: ImportError in sip recipe ignored: No module named python_dateutil-2 

这些错误后,py2app似乎运行,因为它通常应,但当然,应用程序本身不工作。这里发生了什么?我该如何解决?

下面是终端输出的最后一行。

Traceback (most recent call last): 
File "setup.py", line 18, in <module> 
setup_requires=['py2app'], 
File "/Users/Apollo/miniconda/lib/python2.7/distutils/core.py", line 151, in   setup 
dist.run_commands() 
File "/Users/Apollo/miniconda/lib/python2.7/distutils/dist.py", line 953, in run_commands 
self.run_command(cmd) 
File "/Users/Apollo/miniconda/lib/python2.7/distutils/dist.py", line 972, in run_command 
cmd_obj.run() 
File "/Users/Apollo/miniconda/lib/python2.7/site- packages/py2app/build_app.py", line 659, in run 
self._run() 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/py2app/build_app.py", line 865, in _run 
self.run_normal() 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/py2app/build_app.py", line 959, in run_normal 
self.create_binaries(py_files, pkgdirs, extensions, loader_files) 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/py2app/build_app.py", line 1214, in create_binaries 
platfiles = mm.run() 
File "/Users/Apollo/miniconda/lib/python2.7/site- packages/macholib/MachOStandalone.py", line 105, in run 
mm.run_file(fn) 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/macholib/MachOGraph.py", line 84, in run_file 
self.scan_node(m) 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/macholib/MachOGraph.py", line 110, in scan_node 
m = self.load_file(filename, caller=node) 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/macholib/MachOGraph.py", line 93, in load_file 
newname = self.locate(name, loader=caller) 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/macholib/MachOStandalone.py", line 23, in locate 
newname = super(FilteredMachOGraph, self).locate(filename, loader) 
File "/Users/Apollo/miniconda/lib/python2.7/site-packages/macholib/MachOGraph.py", line 49, in locate 
loader=loader.filename) 
TypeError: dyld_find() got an unexpected keyword argument 'loader' 

回答

1

有一个小黑客,会为这个问题的工作,

  1. 转到您的路径/Users/Apollo/miniconda/lib/python2.7/site-packages/macholib/MachOGraph.py并打开这个文件。
  2. 在第49行,改变loader=loader.filenameloader_path=loader.filename

再次运行setup.py。

+0

我试过这个,但那是行不通的。 – muammar

+0

你现在得到的错误是什么? – sidpat

+0

这对我来说非常合适。 – Collaptic