我应该 运行 "pip install -r requirements.txt" 在我的 Git 存储库中,还是在专用的父目录中?

Should I run "pip install -r requirements.txt" inside of my Git repository, or in a dedicated parent directory?

我想知道在本地 Git 克隆中有一个(未跟踪的)虚拟环境文件夹是否被认为是错误的目录结构。

将存储库和虚拟环境放在一个文件夹中似乎更干净,但也更笨拙和笨重。

以下是我正在考虑的两个选项:

A.

git_clone/

    virtual-environment/

乙。

name_of_project/

    git_clone/

    virtual-environment/

这个问题与这个问题类似,但是针对 users/contributors 而不是维护者。

Is it bad to have my virtualenv directory inside my git repository?

将 requirements.txt 复制到父文件夹并在那里使用 PIP。 PIP 就像 NPM,它直接将依赖项安装到 OS(与 snapd 不同),虽然这无关紧要,但安全总比抱歉好!

为了决定,我回答问题 "will I reuse my virtual env in multiple projects?" 如果是,那么我将虚拟环境放在工作树之外。如果不是,那么我将虚拟环境放在工作树中。

至于重用,项目往往不依赖于同一套库。即使它们确实依赖于同一组库,项目也依赖于特定版本的库。因此,在工作树中拥有专用的虚拟环境是一种简单的方法,可以避免在上述情况下因不正确或无关的依赖项而导致问题。

在成本方面,虽然专用虚拟环境会导致重复,但我的大部分虚拟环境都在几十 MB 的数量级; space 的小价格,以避免由于不正确的依赖项造成的麻烦。如果额外 space 确实是一个问题,那么可以根据需要创建、使用和删除虚拟环境,因为创建虚拟环境非常容易(例如,通过 pip 和 requirements.txt)。