У меня среда Python 3, все работает правильно и как положено, т.е.:
$ python --version
Python 3.6.8
$ pip --version
pip 18.1 from /Users/user/.pyenv/versions/3.6.8/envs/myenv/lib/python3.6/site-packages/pip (python 3.6)
Я переношу проект Python 2 на Python 3. У меня есть файл requirements.txt из моего проекта Python 2 — если я установлю эти зависимости в своей среде Python 3, например.
$ pip install -r my_python2_requirements.txt
И это успешно завершено. Гарантирую ли я, что все мои зависимости совместимы с Python 3?
Или, другими словами: возможно ли установить пакет только для Python 2 с Python 3/pip (т.е. пакет, который не будет работать).
Я не совсем уверен в этом, поэтому я провел следующий тест.
Я выбрал случайный модуль из PyPi с пометкой «Только для Python 2» и попытался установить его на обе версии. Для моего теста я использовал патчит.
Команда pip
попала по тому же URL-адресу, а вызов pip3 даже обнаружил и использовал кешированный файл tar.gz
. Таким образом, может показаться, что pip
не предлагает защиту, которую вы желаете. (Разумеется, для пакетов, поддерживающих как 2, так и 3, следует установить соответствующую версию)
Из официальное руководство по переходу:
Use
caniusepython3
to find out which of your dependencies are blocking your use of Python 3 (pip install caniusepython3
)
Это должно помочь определить вещи и изменить requirements.txt
по мере необходимости.