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

时间:2012-12-27 19:37:54

标签: python flask packaging

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

例如,在运行集成服务器时,flask会尝试在当前包中找到templatesstatic目录(基于粘贴)。但是在制作中我更喜欢安装在virtualenv/share/package-name/{static,templates}等更具体位置的目录。否则它们会在lib/python-2.x/...之下,这似乎不合适。

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

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

1 个答案:

答案 0 :(得分:3)

您可以做的是将虚拟环境和静态文件打包到本机程序包(.deb或.rpm)中,然后将它们放在您想要的任何位置。我在这篇here上写了一篇博客文章。它使用一个名为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配置等。但这取决于您,可能意味着您的部署灵活性稍差。

希望有所帮助!