У меня есть файл .python-version, и когда я создаю репозиторий Python с помощью github и указываю, что он должен иметь .gitignore, он добавляет в него файл .python-version. Мне кажется, что этот файл НЕ следует игнорировать, поскольку другие люди, запускающие код на разных машинах, захотят узнать, какая версия Python им нужна.
Так почему именно .gitignored?
@DanielPryden: в ответе ниже указана отличная причина; если у вас установлен Python 3.7.2, но в файле .python-version указано, что владелец проекта использовал версию 3.7.1, то мы оба можем продолжать нормально работать с этим проектом за пределами исправления в конкретных выпусках.
Я предпочитаю Пипенв, который позволяет указать версии Python с таким разрешением, какое необходимо.






Причина, по которой .python-version следует игнорировать, заключается в том, что его версия слишком специфична. Миниатюрные версии Python (например, 2.7.1 и 2.7.2), как правило, совместимы друг с другом, поэтому вам не нужно ограничиваться конкретной крошечной версией. Кроме того, многие приложения или библиотеки Python должны работать с рядом версий Python, а не только с определенной. Использование .python-version указывает на то, что вы хотите, чтобы другие разработчики использовали точную конкретную версию Python, что обычно не является хорошей идеей.
Если вы хотите указать минимальную необходимую версию Python или, в противном случае, диапазон версий, то я считаю, что документирование этого в README является более подходящим решением.
Несмотря на то, что вы слишком конкретны, вы все равно можете изменить версию этого файла (что означает: не включать его в .gitignore по умолчанию), как:
pyenvREADME, чтобы проиллюстрировать, какая версия python рекомендуется для конкретного проекта,pyenv) или просто проигнорировать (если у вас нет pyenv).Как говорится в статье "Как управлять несколькими версиями Python и виртуальными средами":
When setting up a new project that is to use Python 3.6.4 then
pyenv local 3.6.4would be ran in its root directory.
This would both set the version, and create a.python-versionfile, so that other contributors’ machines would pick it up.
Но:
pyenvlooks in four places to decide which version of Python to use, in priority order:
- The
PYENV_VERSIONenvironment variable (if specified).
You can use thepyenv shellcommand to set this environment variable in your current shell session.- The application-specific
.python-versionfile in the current directory (if present).
You can modify the current directory's.python-versionfile with thepyenv localcommand.- The first
.python-versionfile found (if any) by searching each parent directory, until reaching the root of your filesystem.- The global version file. You can modify this file using the
pyenv globalcommand.
If the global version file is not present,pyenvassumes you want to use the "system" Python. (In other words, whatever version would run ifpyenvweren't in yourPATH.)
Хорошо, сэр, я думаю, что ответ на ваш вопрос YES. Я только что открыл официальный репозиторий GitHub и проверил проект gitignore.
Он показал упомянутый там файл .python-version.
И если это не игнорируется, вы можете просто проверить правильность упоминания.
-1, это не отвечает на часть вопроса «почему» и на самом деле не добавляет никакой информации, которую ОП еще не знал и не указал в вопросе.
Это также может быть немного проблематично при использовании виртуальных сред Python, поскольку люди могут захотеть использовать имена виртуальных сред, отличные от 3.7.2/envs/myvenv.
Пост старый, но все еще актуальный.
Мой ответ будет "это зависит".
Имя виртуального окружения также можно использовать в версии .python, если оно управляется с помощью плагина virtualenv для pyenv. Это делает этот файл довольно бесполезным, если проект управляется в общедоступном репозитории Git, и вы можете его исключить (но не делать этого безвредно, как сказано в других ответах).
Но (и я в этой ситуации), если вы управляете проектом в частном репо и делитесь виртуальными окружениями, может иметь смысл не исключать его из Git. Это позволяет вам работать с другой средой (включая версию Python) в экспериментальной ветке проекта. Конечно, было бы намного чище разветвить или клонировать исходный проект и поэкспериментировать с новой средой в копии, но иногда проще просто создать новую ветку.
В конце концов, ИМХО, универсального ответа на вопрос нет, и это зависит от вашего рабочего процесса.
Сам Git не будет автоматически добавлять файл
.gitignore. Поэтому я подозреваю, что вы спрашиваете, почему GitHub ведет себя так. Я предполагаю, что они просто исключают все файлы, начинающиеся с.по умолчанию - я не знаю веской причины игнорировать.python-version.