如何使用静态文件正确包装烧瓶应用程序

vir*_*tor 8 python packaging flask

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

例如,在运行集成服务器时,flask会尝试查找当前包中的templatesstatic目录(基于粘贴).但是在制作中我更喜欢那些安装在更具体的地方的目录virtualenv/share/package-name/{static,templates}.否则他们会在某个lib/python-2.x/...不合适的地方.

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

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

Mar*_*ood 3

您可以做的是将虚拟环境和静态文件打包到本机包(.deb 或 .rpm)中,然后您可以将它们放置在您想要的任何位置。我在这里写了一篇关于此的博文。它使用一个名为fpm的方便的小 ruby​​ gem ,尽管我没有将静态文件与 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>
Run Code Online (Sandbox Code Playgroud)

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

希望有帮助!