使用 venv 虚拟环境时,我应该将哪些文件提交到我的 git 存储库?
When working with a venv virtual environment, which files should I be commiting to my git repository?
使用GitHub's .gitignore,我能够过滤掉一些文件和目录。然而,有几件事让我有点困惑:
- GitHub 的 .gitignore 不包括 venv 创建的 /bin 和 /share。我认为 git 应该忽略它们,但是,因为用户打算自己构建虚拟环境。
- Pip 生成了一个 pip-selfcheck.json 文件,看起来很乱。我假设它通常会这样做,而且我之前没有看到该文件,因为它已与我的全局 pip 放在一起。
- pyvenv.cfg 是我真正无法理解的东西。一方面,它指定了 python 版本,这对于其他想要使用该项目的人来说应该是需要的。另一方面,它还指定了
home = /usr/bin
,虽然在许多 Linux 发行版上可能是正确的,但不一定适用于所有系统。
还有什么我遗漏的files/directories吗?对于如何构建项目和包含哪些内容,是否有更严格的指导方针?
虽然 venv 是一个非常有用的工具,但您不应该假设(除非您有充分的理由这样做)查看您的存储库的每个人都在使用它。避免提交任何仅由 venv 使用的文件;这些并不是能够 运行 你的代码所必需的,它们会让不使用 venv 的人感到困惑。
您需要包含在存储库中的唯一配置文件是由 pip freeze > requirements.txt
生成的 requirements.txt
文件,其中列出了包依赖项。然后,您可以在自述文件中添加注释,指示用户使用命令 pip install -r requirements.txt
安装这些依赖项。在自述文件中指定所需的 Python 版本也是一个好主意。
使用GitHub's .gitignore,我能够过滤掉一些文件和目录。然而,有几件事让我有点困惑:
- GitHub 的 .gitignore 不包括 venv 创建的 /bin 和 /share。我认为 git 应该忽略它们,但是,因为用户打算自己构建虚拟环境。
- Pip 生成了一个 pip-selfcheck.json 文件,看起来很乱。我假设它通常会这样做,而且我之前没有看到该文件,因为它已与我的全局 pip 放在一起。
- pyvenv.cfg 是我真正无法理解的东西。一方面,它指定了 python 版本,这对于其他想要使用该项目的人来说应该是需要的。另一方面,它还指定了
home = /usr/bin
,虽然在许多 Linux 发行版上可能是正确的,但不一定适用于所有系统。
还有什么我遗漏的files/directories吗?对于如何构建项目和包含哪些内容,是否有更严格的指导方针?
虽然 venv 是一个非常有用的工具,但您不应该假设(除非您有充分的理由这样做)查看您的存储库的每个人都在使用它。避免提交任何仅由 venv 使用的文件;这些并不是能够 运行 你的代码所必需的,它们会让不使用 venv 的人感到困惑。
您需要包含在存储库中的唯一配置文件是由 pip freeze > requirements.txt
生成的 requirements.txt
文件,其中列出了包依赖项。然后,您可以在自述文件中添加注释,指示用户使用命令 pip install -r requirements.txt
安装这些依赖项。在自述文件中指定所需的 Python 版本也是一个好主意。