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

时间:2019-01-22 19:31:25

标签: python github gitignore pyenv

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

那为什么是.gitignore d?

5 个答案:

答案 0 :(得分:7)

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

如果您想指出所需的最低Python版本或其他版本范围,那么我认为在README中进行记录是更合适的解决方案。

答案 1 :(得分:4)

尽管过于具体,您仍然可以对该文件进行版本控制(表示:不将其包含在默认.gitignore中),如下所示:

  • 它将仅由pyenv
  • 使用
  • 它是README的一个很好的补充,以说明为特定项目推荐的python版本,
  • 可以轻松地覆盖它(如果使用的是pyenv),也可以简单地忽略它(如果没有pyenv)。

如文章“ How to manage multiple Python versions and virtual environments ”所述:

  

在设置要使用Python 3.6.4的新项目时,将在其根目录中运行pyenv local 3.6.4
  这样既可以设置版本,又可以创建.python-version文件,以便其他贡献者的计算机可以选择它。

但是:

  

pyenv会在四个地方按优先级顺序决定要使用的Python版本:

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

答案 2 :(得分:1)

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

显示其中提到的 .python-version 文件。

如果不被忽略,您只需检查正确的提及方式即可。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

旧帖子,但仍然有意义。

我的回答是“取决于”。

如果使用pyenv的virtualenv插件进行管理,则也可以在.python-version中使用虚拟环境的名称。这使得该文件几乎无用,因为它是在公共Git存储库上管理该项目的,并且您可以将其排除(但如其他答案所述,这样做是无害的)。

但是(在这种情况下,我处于这种情况)如果您在私人仓库上管理项目并共享虚拟环境,那么最好不要将其从Git中排除。这使您可以在项目的实验分支上使用其他环境(包括Python版本)。当然,分叉或克隆原始项目并在副本中尝试使用新的环境会更加清洁,但是有时创建新分支更容易。

最终,恕我直言,这个问题尚无统一答案,这取决于您的工作流程。