Какие зависимости
установятся и каких версий?
» pip install 'Werkzeug==0.5.1'
» pip install 'flask==0.12.2'
Slide 12
Slide 12 text
pip freeze > requirements.txt
Slide 13
Slide 13 text
• Храним только "наши"
зависимости
• Легко читать
человеку
• Трудно понимать
машине
requirements.txt
» cat requirements.txt
flask==0.12.2
Slide 14
Slide 14 text
• Храним все
транзитивные
зависимости
• Трудно читать
человеку
• Легче понимать
машине, но все еще
сложно
requirements.txt
» cat requirements.txt
click==6.7
flask==0.12.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
Werkzeug==0.14.1
Slide 15
Slide 15 text
Найди ошибку в
requirements.txt
docker==3.1.1
requests==2.18.0
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
pip-tools to the
rescue!
Slide 18
Slide 18 text
Так где же ошибка?
docker==3.1.1
requests==2.18.0
Slide 19
Slide 19 text
requirements.in ->
requirements.txt
Slide 20
Slide 20 text
» pip-compile
Could not find a version that matches requests
!=2.18.0, ==2.18.0, >=2.14.2
Tried: 0.2.0, 0.2.1, 0.2.2, ... 2.18.3, 2.18.4,
2.18.4
There are incompatible versions in the resolved
dependencies.
Slide 21
Slide 21 text
certifi==2018.1.18 # via requests
chardet==3.0.4 # via requests
docker-pycreds==0.2.2 # via docker
docker==3.1.1
idna==2.6 # via requests
requests==2.18.4
six==1.11.0 # via docker, six
urllib3==1.22 # via requests
websocket-client==0.47.0 # via docker
requirements.txt
Slide 22
Slide 22 text
Продолжаем искать
ошибки
appnope==0.1.0
enum34==1.1.6
pipenv
• Pipfile / Pipfile.lock уже сегодня
• Deterministic builds
• Управляет virtualenv
• Проверяет безопасность зависимостей
Slide 27
Slide 27 text
Проблемы остаются
• Проект еще в стадии активного развития
• Внутри творится просто дичь
• Бинарные зависимости; psycopg2 и psycopg2-
binary
• Нет интеграции с setuptools
• Постоянные merge-конфликты
• Специфичное комьюнити
Slide 28
Slide 28 text
History.txt
11.7.2: Bugfixes.
11.7.1: Windows bugfix.
11.7.0:Improvements to lockfile generation
with private indexes.
11.6.9: Bugfixes.
11.6.8: Fix a Windows bug.
11.6.7: Fix a Windows bug.
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
Полезные ссылки
• Официальный Slack канал #pipenv:
pythondev.slack.com
• Pipfile specs: github.com/pypa/pipfile
• Обновленный PyPI: pypi.org
• Mimesis: github.com/lk-geimfari/mimesis
• Шаблон с Django, Docker, Pipenv: github.com/
wemake-services/wemake-django-template