Skip to content

Latest commit

 

History

History
54 lines (39 loc) · 2.86 KB

Python. Pipenv.md

File metadata and controls

54 lines (39 loc) · 2.86 KB

Python. Pipenv

#python #pipenv #virtualenv #venv

Ссылки

  1. Статья: https://webdevblog.ru/pipenv-rukovodstvo-po-novomu-instrumentu-python/

Почему 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

  1. Pipenv использует файлы:

    • Pipfile - замена requirements.txt
    • Pipfile.lock - "заблокированные" зависимости
  2. Pipenv использует pip и virtualenv