Подтвердить что ты не робот

Py2app: modulegraph отсутствует scan_code

По какой-то причине я не могу объяснить или 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 без ошибок. Я все еще смущен в отношении того, что произошло.

4b9b3361

Ответ 1

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

Я ссылался на этот пост.

Сначала найдите путь

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

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

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