#python #pipenv #virtualenv #venv
-
venv (virtualenv) использует зависимости, указанные в файле requirements.txt
-
Если не указать версию стороннего пакета в requirements e.g.:
pyudev
то при обновлении самого пакета может быть нарушена обратная совместимость. -
Если указать версию стороннего пакета в requirements e.g. ("закрепление"):
pyudev==0.21.0
то мы точно установим требуемую версию pyudev, однако у данного пакета могут быть свои зависимости, версии которых будут произвольными (видимо, самыми старшими из доступных).
-
-
Для получения текущего состояния системы (всех установленных версий пакетов) следует использовать
pip freeze
stdout:altgraph==0.17.2 bubctl==0.2.dev103+g0c6f518 distlib==0.3.6 ...
Это позволит точно определить все пакеты и их версии для безопасного переноса системы на другой ПК, например. Почему это плохо, согласно автору статьи:Теперь, когда мы указали точные версии каждого стороннего пакета, мы несем ответственность за поддержание актуальности этих версий, даже несмотря на то, что они являются зависимыми компонентами flask. Что если в Werkzeug == 0.14.1 обнаружена дыра в безопасности, которую разработчики пакетов сразу же исправили в Werkzeug == 0.14.2 ? Теперь нам нужно обновиться до Werkzeug == 0.14.2, чтобы избежать каких-либо проблем безопасности, возникающих в более ранней версии.
Note Пока что мне не кажется это проблемой, но возможно я изменю своё мнение.
-
Pipenv использует файлы:
- Pipfile - замена requirements.txt
- Pipfile.lock - "заблокированные" зависимости
-
Pipenv использует pip и virtualenv