Как мне управлять версиями 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 попытка с неверной версией переводчика.

Другие вопросы по тегам