Ошибка при создании исполняемого файла с ожидаемым py2app-объектом str, bytes или os.PathLike, а не NoneType - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать исполняемый файл с py2app, но я получаю эту ошибку, я не уверен, как ее исправить, и я не уверен, правильно ли я включаю все файлы.

Мой рабочий каталог выглядит следующим образом:

directory
  -- app_icon.png
  -- app_loading.gif
  -- app_logo.png
  -- detector.pb
  -- model.py
  -- myapp.py
  -- VGG16_weights.h5
  -- VGG16.h5

Мой файл setup.py выглядит следующим образом:

from setuptools import setup

APP = ['myapp.py']
DATA_FILES = ['app_icon.png', 'app_loading.gif', 'app_logo.png', 'VGG16.h5', 'VGG16_weights.h5', 'detector.pb']
OPTIONS = {
    'argv_emulation': True
}

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

Мое приложение работает правильно, когда я выполняю python myapp.py, однако после того, как я создайте исполняемый файл, используя

python setup.py py2app -A

, когда я запускаю

./dist/myapp.app/Contents/MacOS/myapp

приложение вылетает, и я получаю следующую ошибку:

Traceback (most recent call last):
  File "/Users/luis/Desktop/py2appexec/dist/myapp.app/Contents/Resources/__boot__.py", line 450, in <module>
    _run()
  File "/Users/luis/Desktop/py2appexec/dist/myapp.app/Contents/Resources/__boot__.py", line 444, in _run
    exec(compile(source, script, "exec"), globals(), globals())
  File "/Users/luis/Desktop/py2appexec/myapp.py", line 3, in <module>
    import model as custom_model
  File "/Users/luis/Desktop/py2appexec/model.py", line 2, in <module>
    import tensorflow as tf
  File "/Users/luis/virtualenvironment/executable/lib/python3.7/site-packages/tensorflow/__init__.py", line 732, in <module>
    plugin_dir = _os.path.join(s, 'tensorflow-plugins')
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/posixpath.py", line 80, in join
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not NoneType
2020-01-20 11:06:20.690 myapp[3806:164925] myapp Error

Похоже, что он получает null при поиске пути, но я не знаю, почему или как это исправить, какие-либо решения?

1 Ответ

0 голосов
/ 03 апреля 2020

У меня была похожая проблема. Какие пакеты находятся в ваших py файлах? Может быть, вы можете попробовать добавить пакеты в ваш файл setup.py. Например, у меня есть это в моей переменной OPTIONS:

OPTIONS = {
    'argv_emulation': True,
    'packages':['pygame']}

Я также попытался бы посмотреть в /Users/luis/Desktop/py2appexec/dist/myapp.app/Contents/Resources/ и посмотреть на упомянутые файлы, чтобы увидеть, если что-то отсутствует. Мне не хватало изображений, хотя я думаю, что ваша проблема может быть немного другой. Как только я добавил изображения в папку, все заработало нормально.

...