python - 如何使用静态文件正确打包 Flask 应用程序

标签 python flask packaging

我正在尝试为 webapp(基于 flask)创建一个 python 包,我想在已知目录中安装一些文件。

例如,当运行集成服务器(基于粘贴)时,flask 会尝试在当前包中查找 templatesstatic 目录。但在生产中,我宁愿将这些目录安装在更具体的位置,如 virtualenv/share/package-name/{static,templates}。否则它们将位于 lib/python-2.x/... 下的某个地方,这似乎不合适。

我尝试使用 setup.py 中的 data_files 参数安装文件,但这似乎对整棵树没有用(错误:无法复制“xxx”:不存在或不是常规文件)。

在这种情况下,正确的解决方案是什么?

最佳答案

你可以做的是将你的虚拟环境和静态文件打包成一个本地包(.deb 或 .rpm),然后你可以把它们放在你想要的任何地方。我写了一篇关于这个的博客文章 here .它使用一个方便的小 ruby gem,称为 fpm虽然我没有将我的静态文件与我的 python 包分开,但您可以像这样在 fpm 命令的末尾添加另一个路径映射

    fpm -s dir -t deb -n food-truck -v 0.1 -d "python,python-dev,postgresql" /home/ubuntu/food_truck-build/=/home/ubuntu/foodtruck.com <path to static files>=<destination of static files>

您也可以使用 fpm 指定其他配置文件,例如您的 nginx 配置等。但这取决于您,并且可能意味着您的部署不太灵活。

希望对您有所帮助!

关于python - 如何使用静态文件正确打包 Flask 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14060275/

相关文章:

python - 有没有办法将条件应用于 pandas 中的正则表达式?

python - 我需要制作一个多线程程序(python)

docker - 尝试使用Nginx和Docker在Flask Gunicorn应用程序上进行反向代理的问题

cmake - 如何使用 CMake 打包具有依赖项的目标?

configuration - 防止创建配置文件

针对最小版本的 Flutter 包

python - 使用 exec() 执行的代码中定义的函数范围

python - 生成这个数字序列的更清晰的方法是什么?

python - 在 Python flask 中上传、读取、写入 excel 文件

javascript - 无法访问 JSON 对象的值