我的开发机器上有一个 requirements.txt 文件。我已将其推送到 git repo 并将其克隆到服务器上。
我将更改推送到服务器的方式如下:
我将文件冻结在我的开发机器上,然后将文件添加到 git 并将其拉到服务器上并执行 pip install -r requirements.txt。
但是这样做是一次又一次地安装所有的软件包,我不希望这样。我只希望安装那些未安装在服务器上的软件包。
这样做的最佳方法是什么?我还想知道将开发代码推送到服务器的其他有效方法。
使用buildout,这是另一种方法。Buildout 在安装前检查包,所以它不会重新安装不需要的包。
它是非常强大的工具。部署时,您只需要 make git push
,然后在生产服务器上执行以下操作:
git pull
bin/buildout
而已。你可以阅读一篇关于Buildout 和 pip+virtualenv差异的文章
编辑:
您可以设置PIP_DOWNLOAD_CACHE
路径settings.py
来告诉 pip 将所有下载的包存储在某个目录(packages
例如'')中,这样它就不会再次下载它们:
import os.path
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
PIP_DOWNLOAD_CACHE = os.path.abspath(PROJECT_ROOT+'/packages/'),