10

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

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

我尝试使用data_filesin 参数安装文件setup.py,但这似乎对整棵树没有用(error: can't copy 'xxx': doesn't exist or not a regular file)。

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

4

1 回答 1

3

你可以做的是将你的虚拟环境和静态文件打包成一个本地包(.deb 或 .rpm),然后你可以把它们放在你想要的任何地方。我在这里写了一篇关于此的博客文章。它使用了一个方便的小红宝石 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 配置等。但这取决于您,并且可能意味着您的部署不太灵活。

希望有帮助!

于 2014-01-15T16:11:23.617 回答