One of the challenges developers at any level face is managing their dependencies and development environments. Python is no exception. In the Python ecosystem, there are a number of tools for managing dependencies and environments. However, many of these tools have similar names with slightly differing functions and workflows (e.g: virtualenv, pyenv, venv, virtualenvwrapper, pipenv, and so on...) Furthermore, a number of new tools in this space continue to surface each year. This often creates confusion and appears to contradict the adage: “There should be one – and preferably only one – obvious way to do it.” -- The Zen of Python
In the absence of "one obvious way", the aim of this talk is to help developers at any level better understand the current tools available, what each achieves, and how they can potentially make the developer's life easier. It will cover Python dependency management and the importance of using virtual environments. An explanation and comparison of these different tools, including newer ones, will be also be presented.