· coding  · 2 min read

Pyenv and Poetry: Setting Up a Professional Python Development Environment

Pyenv for managing multiple Python interpreters

The pyenv repo contains usage and installation instructions. If you’re on MacOS or a common Linux distro, you can install pyenv with brew.

brew install pyenv

You’ll then need to add the following snippet to your shell config, e.g. your .bash_profile, .bashrc, or .zshrc.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv init --path)"

After using source on your config or restarting the shell, you should have the pyenv root command.

The command use to install any version of python is pyenv install. Display additional info for this command with pyenv install --help.

pyenv install 3.9.13 # example

Once you have a version installed, you can print out the versions on your machine with:

pyenv versions
# example output
  system
* 3.9.13 (set by /home/realu/.python-version)
  3.10.4

In this example, I have 2 different interpreters installed on my machine. The one with the * is currently set as my global interpreter. This is set manually using the pyenv global command.

pyenv global 3.10.4   # switches the global interpreter to 3.10.4

You can verify this works as expected using python --version. You may be familiar with using python3 as the command instead of python. With pyenv, this is not necessary.

Reference: malexer/cheatsheets/pyenv.md

Poetry for dependency management and publishing packages

Reference: Poetry docs

Poetry can be installed with both curl and pip. I recommended using curl so that it will be global to your machine.

NOTE I highly, highly, highly recommend that you DO NOT use brew to install poetry. If you use brew, it’s going to install directly to your system, which prevents you from being able to leverage pyenv to seamlessly switch between Python interpreters.

# installation with pip: recommended option in tandem with pyenv
pip install poetry
# For UNIX systems - installation with curl
curl -sSL https://install.python-poetry.org/ | python -

After this installation command, add the poetry binary to the path in your shell config.

export PATH=$PATH:$HOME/.poetry/bin

Using poetry

To create a project from scratch, call poetry new [pkg-name]

To create a project from a pre-existing codebase, cd to the root where the package is located (the parent repo or directory to the package) and call:

poetry init

Both of these commands will prompt you to interactively create a pyproject.toml.

After confirming the generation of the project, you can find all of the options you specified inside the pyproject.toml. You can now install the packages.

poetry install

This will resolve dependencies between each of the project’s packages and install them into a virtual environment.

Back to Blog

Related Posts

View All Posts »