Создание приложения py2app, которое взаимодействует с файловой системой - PullRequest
0 голосов
/ 29 декабря 2018

У меня большой файл, который регулярно обновляется путем компиляции данных из другого, даже большего, файла.Я написал скрипт, который импортирует исходные данные, преобразует их так, чтобы они были совместимы с шаблоном, а затем записывает их в шаблон.

Моя проблема заключается в том, что я хотел бы упаковать их в автономный Macприложение для нескольких моих коллег (которые не собираются запускать скрипт из терминала).Когда я создаю приложение в режиме псевдонима, все хорошо;однако, когда я упаковываю его в правильный распространяемый файл, я получаю сообщение об ошибке, в котором говорится, что файл (то есть исходный файл) не найден.

Есть ли способ заставить приложение такого рода взаимодействовать с файловой системойна любом компьютере в месте?Чтобы получить мой рабочий каталог и перейти к подкаталогам исходных и очищенных данных, я использовал:

codedir = os.path.dirname(os.path.realpath(__file__))

и в своем файле setup.py я перечислил все исходные файлы:

from setuptools import setup

APP = ['app.py']
DATA_FILES = ['app_data_1.xlsx',
              'app_data_2.xlsx',
              'app_data_3.xlsx']
...

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

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 12 января 2019

С os.path.dirname(os.path.realpath(__file__)) вы, вероятно, окажетесь где-то в локальной директории Python вашего приложения, которая может быть ./Contents/Resources/lib/python.zip/.Исходя из моего опыта работы с py2app, os.getcwd() указывает на каталог ./Contents/Resources/, в котором должны находиться файлы, представленные в DATA_FILES.

Если это требуется вашим приложением, вы можете помещать файлы данных в подкаталоги ./Contents/Resources/subdirчерез

DATA_FILES = [
        ('subdir', ['module/subdir/app_data_1.xlsx'])
]

Надеюсь, это поможет.

...