Python Application Dependency Management in 2020

Abstract

Zendesk's Chat backend platform is largely powered by Python. Over the years, we have introduced hundreds of open source libraries into our codebase. We have seen multiple production incidents that arise from improper pinning of package versions or incompatible versions between different libraries. Thus a proper application management resolution solution is in need.

Firstly, I will introduce the concept of application dependency management and why it is a hard problem.

Then I will go in depth to share the journey of how we in Zendesk resolved the dependencies issue and slowly prepare itself for the new pip resolver. In particular, I will talk about the behavior of different pip versions when it comes to handling version conflicts and what pip check is and how to use it.

Lastly, I will briefly mention other tools available and give recommendation when to use which and answer questions from the audience.

Description

### Python libraries mentioned - [pip][pip] - The Python package installer - [pipenv][pipenv] - Python Development Workflow for Humans - [piptools](piptools) - A set of tools to keep your pinned Python dependencies fresh - [poetry][poetry] - Python dependency management and packaging made easy ### Reference - https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html - https://hynek.me/articles/python-app-deps-2018/ - https://github.com/sfdye/piptools-example [pip]: https://github.com/pypa/pip [pipenv]: https://github.com/pypa/pipenv/ [piptools]: https://github.com/jazzband/pip-tools [poetry]: https://github.com/python-poetry/poetry

Speaker

Liuyang Wan

to be added