我们应该gitignore .python-version文件吗?

Sha*_*oon 10 python github gitignore pyenv

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

那么为什么呢.gitignore

Hon*_*gli 7

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

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

  • Pyenv 支持指定主要、次要或补丁级别的版本。即,如果“.python-version”文件包含“2.7”,那么它将使用该环境中安装的最新“2.7.*”。在上面的情况下,它将使用“2.7.2”。 (4认同)

小智 7

使用 python 虚拟环境时也可能会出现一些问题,因为人们可能希望使用与3.7.2/envs/myvenv.


Von*_*onC 5

虽然过于具体,但是您仍然可以对该文件进行版本控制(意味着:不将其包含在默认值中.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当前目录中的特定于应用程序的文件(如果存在)。
    您可以.python-version使用以下pyenv local命令修改当前目录的文件。
  3. .python-version通过搜索每个父目录找到第一个文件(如果有),直到到达文件系统的根目录为止。
  4. 全局版本文件。您可以使用pyenv global命令修改此文件。
    如果不存在全局版本文件,则pyenv假定您要使用“系统” Python。(换句话说,如果pyenv不在您的版本中,则可以运行任何版本PATH。)