In this tutorial, I’m going to create a virtual environment using Python's venv.
What is venv？
venv is a module introduced in Python version 3.3 for creating Python virtual environments on top of the base Python.
By using virtual environments, you can install Python packages on a per-project basis rather than system-wide. This allows you to use different versions of packages for different projects and avoids conflicts between dependencies when launching other projects.
The venv is recommended for creating virtual environments for Python versions 3.5 and later. (2023/08)
Let’s try out
Now, let's create a virtual environment..
If you're using Python version 3.3 or later, there's no need for additional installations since venv is included as a standard feature.
For this example, I used Python 3.11.0 on Windows.
python -V Python 3.11.0
Create a virtual environment
For convenience, we'll create a directory named 'test_dir' and create the virtual environment inside it.
l named it 'myenv1' to facilitate managing the virtual environment.
mkdir test_dir cd test_dir python -m venv myenv1
To make it more readable, I've hidden some columns, but here's the contents of the venv as the following.
SInce I’m going to describe only how to use it, I’m not going to describe the details this time, but since it is an important directory/file for configuring a virtual environment, do not make any changes.
ls myenv1 Directory: C:\Users\ichik\test_dir\myenv1 Mode LastWriteTime Name ---- ------------- ---- d----- 2023/08/28 13:30 Include d----- 2023/08/28 13:30 Lib d----- 2023/08/28 13:30 Scripts -a---- 2023/08/28 13:30 pyvenv.cfg
Activate the virtual environment
Use the following command to activate the virtual environment. If the environment name is displayed at the beginning of the prompt, it means it has been activated successfully.
.\myenv1\Scripts\Activate.ps1 (myenv1) PS C:\Users\ichik\test_dir>
Please note that the command may vary depending on your execution environment. Please refer to the table below.
Command for Activating the Virtual Environment
$ source <venv>/bin/activate
$ source <venv>/bin/activate.fish
$ source <venv>/bin/activate.csh
PS C:> <venv>\Scripts\Activate.ps1
While the environment name is displayed, the Python in use is the one from the virtual environment, not the base Python.
By default, the Python version in the virtual environment is the same as the base Python version.
python -V Python 3.11.0
As mentioned earlier, packages in the virtual environment are independent, so you can install packages as needed.
Deactivating the virtual environment
Use the following command to deactivate the virtual environment.
(myenv1) PS C:\Users\ichik\test_dir> deactivate
If you no longer need the virtual environment, you can delete the entire directory.
Example 1: Copy the virtual environment for reuse
If you want to use the virtual environment on a different PC or share it with others for development, it's not recommended to simply copy the venv itself. Instead, create a list of packages and share it along with your source code using version control tools like git.
You can generate a list of packages with the following command.
(myenv1) PS C:\Users\ichik\test_dir> python -m pip freeze > requirements.txt
Then, in a new virtual environment, you can install the packages from the requirements.txt file using the following command.
(myenv1) PS C:\Users\ichik\test_dir> python -m pip install -r requirements.txt
Example 2: Start up the Virtual Environment with a Different Python Version (Windows)
It's also possible to start a virtual environment with a different Python version by installing the desired version. First, check the installed Python versions:
py --list -V:3.11 * Python 3.11 (64-bit) -V:3.9 Python 3.9 (64-bit)
In this example, we'll create a virtual environment using Python 3.9:
py -3.9 -m venv pyenv39 .\pyenv39\Scripts\Activate.ps1
Now you have a virtual environment running with a different Python version:
pyenv39) PS C:\Users\ichik\test_dir> python -V Python 3.9.13
You can execute your program with a different Python version by referencing the source code and requirements.txt and pip install.
・venv is a module introduced in Python 3.3 for creating lightweight Python virtual environments on top of the base Python.
・It allows you to use different versions of packages for different projects and avoids conflicts between dependencies.
・You can launch other projects without worrying about the impact of dependencies.
Thank you for reading.