我有一个.python-version
文件,当我使用github创建一个Python存储库并指定它应该有一个.gitignore
时,它会向其中添加.python-version
文件。在我看来,不应忽略该文件,因为在不同计算机上运行代码的其他人都想知道他们需要的Python版本。
那为什么是.gitignore
d?
答案 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版本:
PYENV_VERSION
环境变量(如果已指定)。
您可以使用pyenv shell
命令在当前的Shell会话中设置此环境变量。- 当前目录(如果存在)中特定于应用程序的
.python-version
文件。
您可以使用.python-version
命令修改当前目录的pyenv local
文件。- 通过搜索每个父目录直到到达文件系统的根目录,找到第一个
.python-version
文件(如果有)。- 全局版本文件。您可以使用
pyenv global
命令来修改此文件。
如果不存在全局版本文件,则pyenv
假定您要使用“系统” Python。 (换句话说,如果pyenv
不在您的PATH
中,则可以运行任何版本。)
答案 2 :(得分:1)
先生,我想您的问题的答案是 YES
。我刚刚开放GitHub官方仓库,并检查了项目gitignore。
显示其中提到的 .python-version
文件。
如果不被忽略,您只需检查正确的提及方式即可。
答案 3 :(得分:1)
在使用python虚拟环境时,这也可能会有些问题,因为人们可能希望使用与3.7.2/envs/myvenv
不同的虚拟环境名称。
答案 4 :(得分:0)
旧帖子,但仍然有意义。
我的回答是“取决于”。
如果使用pyenv的virtualenv插件进行管理,则也可以在.python-version中使用虚拟环境的名称。这使得该文件几乎无用,因为它是在公共Git存储库上管理该项目的,并且您可以将其排除(但如其他答案所述,这样做是无害的)。
但是(在这种情况下,我处于这种情况)如果您在私人仓库上管理项目并共享虚拟环境,那么最好不要将其从Git中排除。这使您可以在项目的实验分支上使用其他环境(包括Python版本)。当然,分叉或克隆原始项目并在副本中尝试使用新的环境会更加清洁,但是有时创建新分支更容易。
最终,恕我直言,这个问题尚无统一答案,这取决于您的工作流程。