我刚开始一个新的Django项目,并使用Postgresql作为数据库,所以我安装了psycopg2使其正常运行。当我在一开始部署项目时,该应用程序无法正常工作,因为生产服务器上未安装psycopg2。我很快意识到这是因为psycopg2在我的pipfile中丢失了。
所以我的问题是:
每次为项目安装某些东西时,我都必须手动更新pipfile吗?我以为pipfile会在每次安装某些东西时自动进行处理。
是否有与pip freeze > requirements.txt
类似的地方,我可以用一个简短的命令进行更新?
答案 0 :(得分:0)
每次为项目安装某些东西时,我都必须手动更新pipfile吗?我以为pipfile每次安装时都会自动处理。
requirements.txt
只是一个文件。它周围没有逻辑来更新该逻辑(除非您有执行此操作的IDE)。它本身不是用于程序包管理器的文件。您可以使用任何文件,也可以使用多个文件(例如,有时制作一个requirements_test.txt
文件,其中包含在测试软件时应安装的额外软件包)。
您本身不需要每次安装软件都更新requirements.txt
文件,只要在(在另一台计算机上)部署软件时requirements.txt
文件是正确的即可。
但是,您可以在某种程度上使它自动化。例如,如果使用git
颠覆,则可以制作一个pre-commit
钩子,该钩子在您提交更改时每次都会运行。例如,通过在存储库中的.git/hooks/pre-commit
中构建一个可执行文件文件。可能看起来像这样:
#!/bin/bash
. env/bin/activate
pip freeze > requirements.txt
每次提交时,requirements.txt
将与虚拟环境中安装的软件包“协调”。