What Are Virtual Environments?
Importance of Virtual Environments
How to Use Python Virtual Environment
How to Use Conda Virtual Environments
What Are Virtual Environments?
A Python environment consists of two essential components: the Python interpreter that the virtual environment runs on and a folder containing third-party libraries. Any changes on dependencies installed in a virtual environment don't affect the dependencies of the other virtual environments or the system-wide libraries. Thus, we can create multiple virtual environments with different Python versions, plus different libraries or the same libraries in different versions.
Importance of Virtual Environments
The importance of virtual environments becomes apparent when we have various Python projects on the same machine that depend on different versions of the same packages. If working on two different machine learning projects that use the sklearn package, one using version 1.0.0 and the other using version 1.0.2. This would cause compatibility issues because Python cannot use multiple versions of the same package at the same time. The other use case that magnifies the importance of using Python virtual environments is when you're working on managed servers or production environments. Basically, setting up virtual environments is the best way to isolate different Python projects, especially if these projects have different and conflicting dependencies. Best practice is to always set up a separate virtual environment for each Python project and install all the required dependencies inside it — never install packages globally.
How to Use Python Virtual Environments
In this part of the tutorial, we'll learn how to create and activate virtual environments. Let’s overview the Folder Structure of the Python virtual Environment
venv/
├── Include
├── Lib
│ └── site-packages
├── Scripts
│ ├── Activate.ps1
│ ├── activate
│ ├── activate.bat
│ ├── deactivate.bat
│ ├── pip.exe
│ ├── pip3.10.exe
│ ├── pip3.exe
│ ├── python.exe
│ └── pythonw.exe
└── pyvenv.cfg
This tree structure gives a better view of what’s going inside the virtual environment.
Include: is an initially empty folder that Python uses to include C header files for packages you might install that depend on C extensions.
Lib: contains the site-packages\ folder, which is one of the main reasons for creating your virtual environment. This folder is where you’ll install external packages that you want to use within your virtual environment. By default, your virtual environment comes preinstalled with two dependencies, pip and setuptools. You’ll learn more about them in a bit.
Scripts: contains the executable files of your virtual environment. Most notable are the Python interpreter (python.exe), the pip executable (pip.exe), and the activation script for your virtual environment, which comes in a couple of different flavors to allow you to work with different shells. In this tutorial, you’ve used Activate.ps1, which handles the activation of your virtual environment for Windows PowerShell.
- pyvenv.cfg: is a crucial file for your virtual environment. It contains only a couple of key-value pairs that Python uses to set variables in the sys module that determine which Python interpreter and which site-packages directory the current Python session will use.
Lets start creating virtual environment first make a project folder where you want to create project and create a virtual environment inside it. To do it, open the terminal, write the following command, and hit enter.
For Windows:
python -m venv venv
For Linux:
$ python3 -m venv venv
Activating a Python Virtual Environment
For windows:
venv\Scripts\activate.bat
For Linux"
$ source venv/bin/activate
Installing Packages:
For Windows:
python -m pip install <package-name>
For Linux:
$ python -m pip install <package-name>
Installing requirement :
python -m pip install -r requirements.txt
Deactivate a Python Virtual Environment:
It is very simple to deactivate python virtual environment just type deactivate
For windows:
deactivate
For Linux:
$ deactivate
Printing all packages installed in virtual environment
pip freeze
Update the Core Dependencies:
upgrading pip for Windows an Linux:
[path] pip install --upgrade pip
Upgrading dependencies for Windows
python -m venv venv --upgrade-deps
Upgrading dependencies for Linux:
$ python3 -m venv venv --upgrade-deps
Cleaning Virtual Environment
pip uninstall -y -r <(pip freeze)
Exporting and Importing Python Virtual Environment:
You can export the list of all the packages installed using
pip freeze > requirements.txt
Then push the requirements.txt file to anywhere you want to deploy the code, install the dependencies using pip install -r requirements.txt
pip install -r requirements.txt
Deleting Python Virtual Environment:
There is no command to remove virtual environment , you can deactivate it or remove the folder but unfortunately virtual environment library doesn't contain any kind of removal functionality.
How to Use Conda Virtual Environments
Conda is a language-agnostic tool for package management and environment management. As a package manager, Conda can install, update and remove packages. As an environment manager, it can manage virtual environments.
To create conda environment, create the project folder, open terminal:
For windows:
conda create --name myenv
myenv is the name of environment you can mention any name, You can also specify which version of Python you want to work with:
conda create --name my-env python=3.8
You can list all the available environments with
conda info –envs
Or
conda env list
Installing and updating any package in conda enviorment: Install any package in conda environment using below mention command
conda install [PACKAGENAME]
Update any package
conda update [PACKAGENAME]
Removing single or multiple package
Remove one or more packages (toolz, boltons),from a specific environment (bio-env).
conda remove --name bio-env toolz boltons
Removing conda enviorment
First you need to deactivate conda environment
conda deactivate
then run below command, mention environment name in place of ENV_NAME
conda env remove -n ENV_NAME
Cloning conda enviorment
You can make an exact copy of an environment by creating a clone of it:
conda create --name myclone --clone myenv
Replace myclone with the name of the new environment. Replace myenv with the name of the existing environment that you want to copy.
References:
https://realpython.com/python-virtual-environments-a-primer/
https://docs.python-guide.org/dev/virtualenvs/
https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html