По какой-то причине я не могу объяснить или google, py2app падает на меня даже с простейшими примерами. Im, используя виртуальную среду python 3.4.1, созданную как Projects/Test/virtenv
, у которой py2app установлен через pip.
Вот результат $pip list
:
altgraph (0.12)
macholib (1.7)
modulegraph (0.12)
pip (1.5.6)
py2app (0.9)
setuptools (3.6)
foo.py - это пример файла hello world, сохраненный в Project/Test/и содержащий одну строку:
print('hello world')
setup.py сохраняется в проектах/тесте, сгенерированном с помощью $py2applet --make-setup foo.py
:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['foo.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
Вот полный вывод работы $python setup.py py2app
(все команды pip и python были выполнены с активированной виртуальной средой):
running py2app
creating /Users/mik/Desktop/Projects/Test/build
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64/python3.4-standalone
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64/python3.4-standalone/app
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64/python3.4-standalone/app/collect
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64/python3.4-standalone/app/temp
creating /Users/mik/Desktop/Projects/Test/dist
creating build/bdist.macosx-10.8-x86_64/python3.4-standalone/app/lib-dynload
creating build/bdist.macosx-10.8-x86_64/python3.4-standalone/app/Frameworks
*** using recipe: lxml ***
*** using recipe: ftplib ***
*** using recipe: sip ***
*** using recipe: ctypes ***
*** using recipe: xml ***
*** using recipe: pydoc ***
Traceback (most recent call last):
File "setup.py", line 18, in <module>
setup_requires=['py2app'],
File "/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/Users/mik/Desktop/Projects/Test/virtenv/lib/python3.4/site-packages/py2app/build_app.py", line 659, in run
self._run()
File "/Users/mik/Desktop/Projects/Test/virtenv/lib/python3.4/site-packages/py2app/build_app.py", line 865, in _run
self.run_normal()
File "/Users/mik/Desktop/Projects/Test/virtenv/lib/python3.4/site-packages/py2app/build_app.py", line 943, in run_normal
self.process_recipes(mf, filters, flatpackages, loader_files)
File "/Users/mik/Desktop/Projects/Test/virtenv/lib/python3.4/site-packages/py2app/build_app.py", line 824, in process_recipes
rval = check(self, mf)
File "/Users/mik/Desktop/Projects/Test/virtenv/lib/python3.4/site-packages/py2app/recipes/virtualenv.py", line 80, in check
mf.scan_code(co, m)
AttributeError: 'ModuleGraph' object has no attribute 'scan_code'
Может кто-нибудь объяснить, что происходит и как это исправить?
EDIT: здесь - это документация для scan_code в modulegraph.py, однако файл найден в Project/Test/virtenv/lib/python3. 4/site-packages/modulegraph/modulegraph.py содержит функцию, называемую _scan_code с ведущим подчеркиванием. Это какой-то тип изменения, который сломал py2app?
EDIT: опубликовано this
РЕДАКТИРОВАТЬ: вручную удаляя ведущие символы подчеркивания из определений функций пары в указанном файле, разрешено запускать py2app без ошибок. Я все еще смущен в отношении того, что произошло.