py2app: в modulegraph отсутствует код сканирования

Почему-то не могу объяснить или погуглить, у меня py2app вылетает даже на самых простых примерах. Я использую виртуальную среду 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, сохраненный в Projects/Test/ и содержащий одну строку:

print('hello world')

setup.py сохраняется в Projects/Test как сгенерированный $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'

Может кто-нибудь объяснить, что происходит и как это исправить?

РЕДАКТИРОВАТЬ: здесь находится документация для scan_code в modulegraph.py, однако файл, найденный в Projects/Test/virtenv/lib/python3.4/site-packages/modulegraph/modulegraph.py, содержит функцию с именем _scan_code с подчеркиванием в начале. Это какое-то изменение, которое сломало py2app?

РЕДАКТИРОВАТЬ: опубликовано это

РЕДАКТИРОВАТЬ: ручное удаление ведущих подчеркиваний из нескольких определений функций в упомянутом файле позволило py2app работать без ошибок. Я все еще в замешательстве относительно того, что произошло


person Michal    schedule 19.08.2014    source источник


Ответы (1)


У меня была такая же проблема, как у вас, и я решил ее сейчас.

Я сослался на этот сообщение.

Во-первых, поиск пути

$ /yourenv/lib/python2.7/site-packages/py2app/recipes/virtualenv.py

Затем откройте этот файл virtualenv.py, найдите scan_code или load_module и измените его на _scan_code или _load_module.

Наконец, попробуйте запустить приложение

person third9    schedule 04.04.2015
comment
Я узнал, что это небольшая ошибка в p2app. Разработчик уже знает об этом. - person Michal; 04.04.2015
comment
Кажется исправлено в bitbucket.org/ronaldoussoren/py2app/commits/ - person Andrei; 06.06.2015
comment
@ Андрей, ошибка появляется только для решения проблемы _scan_code в коде, а не для модуля загрузки. - person JamesD; 25.09.2015