我正在尝试为webapp创建一个python包(基于flask),我想在已知目录中安装一些文件。
例如,在运行集成服务器时,flask会尝试在当前包中找到templates
和static
目录(基于粘贴)。但是在制作中我更喜欢安装在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
)似乎没有用。
在这种情况下,什么是正确的解决方案?
答案 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配置等。但这取决于您,可能意味着您的部署灵活性稍差。
希望有所帮助!