2015-10-14 88 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