DEV Community

Carlos Armando Moreira
Carlos Armando Moreira

Posted on

Creating a Virtual Environment (venv) in Python

Introduction

Virtual environments are an essential tool for Python developers, allowing us to create isolated spaces for our applications. This is especially useful when you need to manage different versions of packages and dependencies without affecting the global system. In this post, I intend to demonstrate how you can create and use a virtual environment in Python.

Creating a Virtual Environment

First, to create a virtual environment, we will need the venv module, which is already included in the more recent versions of Python (starting from version 3.3). This means that when you install Python, you automatically have access to the functionality to create virtual environments using venv.

1. Creating the Project

First, we need to create a folder that will contain our project. You can do this manually or through the terminal.

mkdir my-project
Enter fullscreen mode Exit fullscreen mode

Navigating into the folder:

cd my-project/
Enter fullscreen mode Exit fullscreen mode

2. Creating the Virtual Environment

To create the virtual environment, type the following command in the terminal:

python3 -m venv virtual_environment_name
Enter fullscreen mode Exit fullscreen mode

Normally, we use "venv" as the virtual_environment_name, but this is not a rule, and other names should work as well.

After using the command above, note that a folder will be created (with the name you provided), and this folder will be responsible for storing the current version of Python you have, as well as all the libraries used in the project. These libraries will be stored only in this directory and not in the main system, allowing for versatility when working on different projects.

3. Activating the Virtual Environment

On macOS and Linux:

source virtual_environment_name/bin/activate
Enter fullscreen mode Exit fullscreen mode

On Windows:

virtual_environment_name\Scripts\Activate
Enter fullscreen mode Exit fullscreen mode

Once this is done, the name of the current virtual environment will be displayed in the terminal prompt, indicating that the environment has been successfully activated. This way, we can install the project dependencies normally without potential conflicts. Simply type pip install followed by the name of the library you want to install.

4. Replicating Environments

With our virtual environment up and running, we can replicate it on other machines. To do this, we need to export a file containing the libraries used in the project.

pip freeze > requirements.txt
Enter fullscreen mode Exit fullscreen mode

By using this command, a requirements.txt file will be created, containing all the libraries present in our virtual environment. For example:

Flask==2.3.2
requests==2.32.3
beautifulsoup4==4.12.3
Enter fullscreen mode Exit fullscreen mode

Finally, if we want to run our project on another machine, it won’t be necessary to download the dependencies one by one. We can simply use the command below, and all the libraries listed in the requirements.txt file will be installed automatically.

pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

5. Deactivating the Virtual Environment

To deactivate a virtual environment and return to the global Python environment, we can type:

deactivate
Enter fullscreen mode Exit fullscreen mode

Conclusion

Virtual environments are a fundamental part of Python development, allowing developers to isolate their applications and manage dependencies effectively. Their use not only prevents conflicts between different projects but also makes sharing and collaborating on projects much simpler.

Additionally, using the requirements.txt file simplifies the setup of environments on different machines, saving time and effort in manually installing dependencies. In summary, utilizing virtual environments should be a standard practice for any Python developer, contributing to a more organized and efficient workflow.

You can read more about virtual environments in Python at the official documentation: Python venv documentation.

Top comments (0)