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

Posted

技术标签:

【中文标题】我应该在我的 Git 存储库中还是在专用的父目录中运行“pip install -r requirements.txt”?【英文标题】:Should I run "pip install -r requirements.txt" inside of my Git repository, or in a dedicated parent directory? 【发布时间】:2020-04-19 10:43:30 【问题描述】:

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

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

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

一个。

git_clone/

    virtual-environment/

B.

name_of_project/

    git_clone/

    virtual-environment/

这个问题与这个问题类似,但针对的是用户/贡献者而不是维护者。

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

【问题讨论】:

这确实是一个意见问题,但我倾向于喜欢/home/myuser/envs/ 中的环境和/home/myuser/build(或其他)中的工作副本。 分离环境和工作副本对您有好处吗? 没有被 .gitignore 忽略,对吧? 我将虚拟环境与本地 Git 克隆分开。在我看来,在存储库中只包含 req.txt 会更干净。 【参考方案1】:

为了做出决定,我回答“我会在多个项目中重复使用我的虚拟环境吗?”这个问题。如果是,那么我将虚拟环境放在工作树之外。如果不是,那么我将虚拟环境放在工作树中。

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

在成本方面,虽然专用虚拟环境会导致重复,但我的大多数虚拟环境都在几十 MB 左右;空间方面的小代价,以避免由于不正确的依赖关系引起的麻烦。如果额外的空间确实是一个问题,那么可以在需要时创建、使用和删除虚拟环境,因为创建虚拟环境非常容易(例如,通过 pip 和 requirements.txt)。

【讨论】:

【参考方案2】:

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

【讨论】:

它将依赖项安装到虚拟环境中,而不是操作系统中,如果您正在使用问题中的虚拟环境(并且您应该这样做)。使用 npm 而不是默认的 project-local node_modules 全局安装包同样是不好的做法。

以上是关于我应该在我的 Git 存储库中还是在专用的父目录中运行“pip install -r requirements.txt”?的主要内容,如果未能解决你的问题,请参考以下文章

我应该将我的 Nuxt 应用程序直接部署到 Google App Engine 还是应该在我的代码存在于存储库中的地方使用 Gitlab CI/CD?

在 git 存储库中移动大量大文件

Mercurial:两个Windows开发人员,我的PC上的中央存储库。我应该在中央存储库中工作还是从中克隆?

git - 是不是可以从“git push”中排除文件,但将它们保存在本地存储库中?

Git存储库中的Git存储库[重复]

将子目录分离(移动)到单独的 Git 存储库中