Как мне управлять версиями Python в системе контроля версий для приложения?
У нас есть приложение, которое использует pyenv / virtualenv для управления зависимостями Python. Мы хотим, чтобы все, кто работает с приложением, имели одинаковую версию Python. Исходя из рубина, аналог Gemfile. В определенной степени.ruby-версия.
Что эквивалентно в Python? Это.python-версия? Я видел довольно много.gitignore, которые имеют это в себе и обычно под комментарием ".pyenv". В чем причина? И какая альтернатива?
1 ответ
Последние версии setuptools
(24.2.0+) позволяют вам контролировать версию Python на уровне дистрибутива.
Например, если вы хотите разрешить установку только на (совместимой) версии Python 3.6, вы можете указать:
# in setup.py
from setuptools import setup
setup(
...
python_requires='~=3.6',
...
)
Дистрибутив, созданный с помощью этой настройки, будет иметь связанные метаданные, которые будут препятствовать установке на несовместимую версию Python. Вашим клиентам нужна текущая версия pip
для правильной работы этой функции старый pip (<9.0.0) не будет проверять эти метаданные.
Если вы должны распространить требование на людей, использующих более старую версию pip
Вы можете поставить явную проверку sys.version
где-то на уровне модуля setup.py
файл. Тем не менее, обратите внимание, что с помощью этого обходного пути пакет все равно будет загружен pip - позже произойдет сбой pip install
попытка с неверной версией переводчика.