我有一个.python-version
文件,当我用github创建一个Python repo并指定它应该有.gitignore
时,它会向其中添加.python-version
文件。在我看来,这个文件不应该被忽略,因为其他在不同机器上运行代码的人会想知道他们需要什么版本的Python。
为什么是.gitignore
d?
虽然过于具体,但您仍然可以将该文件的版本(意思是:不将其包含在默认的.gitignore
中)设置为:
- 它将仅由
pyenv
使用 - 这是对
README
的一个很好的补充,以便说明具体项目建议使用哪种版本的python - 它可以很容易地被覆盖(如果您使用
pyenv
),或者简单地被忽略(如果您没有pyenv
)
正如文章"如何管理多个Python版本和虚拟环境"所述:
当设置一个使用Python 3.6.4的新项目时,
pyenv local 3.6.4
将在其根目录中运行
这将设置版本,并创建一个.python-version
文件,以便其他贡献者的机器能够获取它。
但是:
pyenv
从四个地方查找,以决定使用哪种版本的Python,按优先级排列:
PYENV_VERSION
环境变量(如果指定)
您可以使用pyenv shell
命令在当前shell会话中设置此环境变量- 当前目录中特定于应用程序的
.python-version
文件(如果存在)
您可以使用pyenv local
命令修改当前目录的.python-version
文件- 通过搜索每个父目录找到的第一个
.python-version
文件(如果有的话),直到到达文件系统的根目录- 全局版本文件。可以使用
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
文件。
若它并没有被忽视,你们可以简单地检查一下正确的提及方式。