1

我刚刚开始了一个新的 Django 项目并使用 Postgresql 作为我的数据库,所以我安装了 psycopg2 以使其正常工作。当我一开始部署项目时,应用程序无法正常工作,因为生产服务器上没有安装 psycopg2。我很快意识到这是因为我的 pipfile 中缺少 psycopg2。

所以我的问题是:

每次为我的项目安装某些东西时,我是否必须手动更新 pipfile?我认为每次我安装某些东西时 pipfile 都会自动处理这个问题。

没有什么类似于pip freeze > requirements.txt我可以用一个短命令进行更新的地方吗?

4

1 回答 1

3

每次为我的项目安装某些东西时,我是否必须手动更新 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都会与安装在虚拟环境中的软件包“协调”。

于 2019-09-28T10:29:22.407 回答