Учитывая простое приложение для колб, которое организовано так:
app_repo/
--> flask_app.py
--> custom.css
--> setup.py
--> MANIFEST.in
Я хотел бы упаковать это для выпуска на PyPi, но у меня проблемы с упаковкой файла css вместе с приложением.
Файл setup.py выглядит следующим образом:
from setuptools import setup
setup(
name='myapp',
version='1',
py_modules=['flask_app'],
data_files=[('', ['custom.css'])],
entry_points={'console_scripts':
['runapp = flask_app:app.run_server']},
)
Я также включаю файл custom.css в файл MANIFEST.in.
Внутри flask_app.py у меня есть строка вроде:
CSS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'custom.css')
, которая позволяет мне направлять файл css с помощью send_from_directory Flask.
При разработке приложения из каталога репозитория и запуске колбы, приложение находит файл css и все работает правильно. Но когда я упаковываю приложение с помощью python setup.py sdist, файл css не помещается рядом с flask_app.py и, таким образом, не обнаруживается.
В unix запись data_files в setup.py приводит к тому, что установленные файлы выглядят так:
/usr/local/custom.css
/usr/local/lib/python3.6/site-packages/flask_app.py
Но я бы хотел, чтобы это отражало функциональность репозитория:
/usr/local/lib/python3.6/site-packages/custom.css
/usr/local/lib/python3.6/site-packages/flask_app.py
Есть ли способ иметь непакетное приложение для работы с отдельными файлами, которое можно установить и запустить из точки входа, которая гарантирует, что файл css находится в том же каталоге, где установлен модуль python?
Я знаю, что могу создать пакет, поместить файл app и css в пакет, а затем использовать package_data в файле setup.py, но я ищу решение, которое позволило бы мне не создавать никаких пакетов .