我们应该gitignore.python版本的文件吗



我有一个.python-version文件,当我用github创建一个Python repo并指定它应该有.gitignore时,它会向其中添加.python-version文件。在我看来,这个文件不应该被忽略,因为其他在不同机器上运行代码的人会想知道他们需要什么版本的Python。

为什么是.gitignored?

虽然过于具体,但您仍然可以将该文件的版本(意思是:不将其包含在默认的.gitignore中)设置为:

  • 它将仅由pyenv使用
  • 这是对README的一个很好的补充,以便说明具体项目建议使用哪种版本的python
  • 它可以很容易地被覆盖(如果您使用pyenv),或者简单地被忽略(如果您没有pyenv)

正如文章"如何管理多个Python版本和虚拟环境"所述:

当设置一个使用Python 3.6.4的新项目时,pyenv local 3.6.4将在其根目录中运行
这将设置版本,并创建一个.python-version文件,以便其他贡献者的机器能够获取它。

但是:

pyenv从四个地方查找,以决定使用哪种版本的Python,按优先级排列:

  1. PYENV_VERSION环境变量(如果指定)
    您可以使用pyenv shell命令在当前shell会话中设置此环境变量
  2. 当前目录中特定于应用程序的.python-version文件(如果存在)
    您可以使用pyenv local命令修改当前目录的.python-version文件
  3. 通过搜索每个父目录找到的第一个.python-version文件(如果有的话),直到到达文件系统的根目录
  4. 全局版本文件。可以使用pyenv global命令修改此文件
    如果全局版本文件不存在,pyenv将假定您要使用"系统"Python。(换句话说,如果pyenv不在您的PATH中,则运行任何版本。)

.python-version应该被gitignore的原因是因为它的版本太具体了。Python的微小版本(例如2.7.1和2.7.2)通常彼此兼容,因此您不想锁定到特定的微小版本。此外,许多Python应用程序或库应该使用一系列Python版本,而不仅仅是特定的版本。使用.python-version表示您希望其他开发人员使用精确、特定的Python版本,这通常不是一个好主意。

如果你想指出所需的最低Python版本,或者其他版本范围,那么我相信在自述中记录它是一个更合适的解决方案。

使用python虚拟环境时也可能会有点问题,因为人们可能希望使用不同于3.7.2/envs/myvenv的虚拟环境名称。

旧帖子,但仍然相关。

我的回答是";这取决于";。

如果在pyenv的virtualenv插件的帮助下进行管理,那么虚拟env的名称也可以在.python版本中使用。这使得这个文件非常无用——项目是在公共Git回购上管理的,你可以排除它(但不这样做是无害的,正如其他答案所说)。

但是(我正处于这种情况),如果你在私人回购上管理项目并共享虚拟环境,那么不将其从Git中排除是有意义的。这允许您在项目的实验分支上使用不同的环境(包括Python版本)。当然,派生或克隆原始项目并在副本中尝试新的env会干净得多,但有时只创建一个新分支会更容易。

归根结底,IMHO这个问题没有通用的答案,这取决于你的工作流程。

先生,我想您的问题的答案是YES。我刚刚打开GitHub官方回购,并检查了项目gitignore。

它显示了那里提到的.python-version文件。

若它并没有被忽视,你们可以简单地检查一下正确的提及方式。

最新更新