【发布时间】:2018-10-14 01:27:34
【问题描述】:
给定一个这样组织的简单烧瓶应用程序:
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')
这让我可以使用 Flask 的 send_from_directory 路由 css 文件。
从存储库目录开发应用程序并运行flask时,应用程序找到了css文件并且一切正常。但是当我使用 python setup.py sdist 打包应用程序时,css 文件没有放置在 flask_app.py 旁边,因此找不到。
在 unix 上,setup.py 中的 data_files 条目会导致安装的文件如下所示:
/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 模块的目录位于同一目录中?
我知道我可以创建一个包,将应用程序和 css 文件放入包中,然后在 setup.py 文件中使用 package_data,但我正在寻找一个允许我不制作任何包的解决方案.
【问题讨论】:
标签: python css flask setuptools