I. Overview

In this blog post, we will explore how to use pyenv-virtualenv and autoenv together for seamless Python development. These tools can help you manage multiple Python environments and virtual environments with ease, improving your development workflow.

II. Pyenv-virtualenv

Pyenv-virtualenv is a plugin for pyenv that allows you to create and manage virtual environments for different Python versions. It helps you keep dependencies for different projects separate, ensuring that each project has access to the packages it requires without interference.

Creating a Virtual Environment

To create a new virtual environment using pyenv-virtualenv, use the following command:

pyenv virtualenv <python-version> <virtualenv-name>

For example, if you want to create a virtual environment named my_project using Python 3.8.0:

pyenv virtualenv 3.8.0 my_project

Listing Virtual Environments

To list all the virtual environments you’ve created, use the following command:

pyenv virtualenvs

Activating a Virtual Environment

To activate a virtual environment, use the following command:

pyenv activate <virtualenv-name>

For example:

pyenv activate my_project

Deactivating a Virtual Environment

To deactivate the current virtual environment, use the following command:

pyenv deactivate

III. Autoenv

Autoenv is a tool that automatically activates a virtual environment when you enter a directory containing a .env file. This makes it easy to switch between projects without having to remember to activate and deactivate virtual environments manually.

Setting up Autoenv

To use autoenv, you need to create a .env file in the root directory of your project. This file will contain the commands that should be executed when you enter the directory.

For example, let’s say you have a project located at ~/projects/my_project and you want to use the my_project virtual environment created earlier. Create a .env file in the ~/projects/my_project directory with the following content:

source $(pyenv root)/versions/my_project/bin/activate

Using Autoenv

Now, when you navigate to the project directory, autoenv will automatically activate the my_project virtual environment for you:

cd ~/projects/my_project

You should see a message indicating that the virtual environment has been activated:

autoenv: Activating environment . . .
(my_project) $

When you leave the project directory, the virtual environment will be deactivated automatically:

cd ~

You should see a message indicating that the virtual environment has been deactivated:

autoenv: Deactivating environment . . .
$

IV. Conclusion

By combining pyenv-virtualenv and autoenv, you can create a seamless development workflow for managing multiple Python projects. This approach ensures that you always use the correct virtual environment for each project, while also keeping your dependencies separate and organized.