Dhiraj Kafle · 9 min read

Indepth on Virtual Env. - venv

A deep dive into Python virtual environments, using pip for web applications and conda for machine learning and data science workflows.

  • Python
  • venv
  • Virtual Environment
Indepth on Virtual Env. - venv illustration

Understanding Python Virtual Environments

A Virtual Environment (venv) is an isolated Python workspace that allows developers to install and manage dependencies for each project independently.

It prevents conflicts between global and project-specific packages, ensuring your web, data science, or automation projects remain stable and reproducible.

Why Use a Virtual Environment?

Dependency Isolation: Avoid version clashes between different projects.

Cleaner System: Keeps global Python environment untouched.

Reproducibility: Share requirements.txt to recreate identical setups elsewhere.

Version Control: Use different Python or library versions per project.

Deployment Ready: Ensures consistent environment for CI/CD and servers.

Two major python’s package, dependencies & environment mangaer

pip

conda

pip (Pip Installs Packages)

  • pip stands for ‘Pip Installs Packages’. It is the default package manager for Python, officially maintained by the Python Software Foundation.

  • It installs and manages Python packages from PyPI (Python Package Index), the global repository of Python libraries.

  • It is considered best for web development, script automation & for general python tasks.

  • Link of PyPI packages: https://pypi.org/

Conda

  • conda is a cross-language package, dependency, and environment manager developed by Anaconda, incorporation.

  • It’s not just for Python — it can manage C, C++, R, Java, etc. dependencies too.

  • Unlike pip, conda can even install Python itself, meaning you can setup/manage your desire isolated versions of Python.

  • Conda installs packages from the Anaconda Repository (or Conda-Forge).

  • It is considered best for Data science (DS), Machine Learning (ML) & for cross-language environments.

  • Link of conda packages: https://anaconda.org/ & https://conda.anaconda.org/conda-forge/

Setting up via, pip (Pip Installs Packages)

🚀 Setting Up Virtual Environment in Windows OS (Using virtualenv)

Step 1(Only one time): Open Windows PowerShell as Administrator

One time Command - Only required once if virtualenv not installed previously

To check if virtualenv is already intalled/setup on your windows OS or not. virtualenv –version If only not have already installed, then you can run the following command to install it.
No need if already installed.

pip install virtualenv

Step 2: Create a Virtual Environment

At first, navigate (go to) to your project directory

cd path_to_your_project

Now, You create python virtual environment

Syntax:

virtualenv virtual_env_folder

For Example:

virtualenv python_env

Step 3: Activate the Virtual Environment

Syntax:

virtual_env_folder\Scripts\activate

For Example:

python_env\Scripts\activate

Once activated, you’ll notice (python_env) appears before your command line — indicating your environment is active.

💬 To deactivate: deactivate

🐧 Set Up Virtual Environment in Linux OS (using python-venv)

(Linux Destros like Ubuntu, Arch Linux, Fedora, Pop!_OS)

Step 1(Optional): Install venv module only if not already setup on your system

(One-time Setup)

First, check if python-venv is already intalled/setup on linxu os or not.

(If already installed, no need to install again.)
apt list –installed | grep python3.13-venv

OR

dpkg -l | grep python3.13-venv

Now, check which python version is in your linux operating system.

python3 –version OR python –version

python3 –v OR python –v

which python3 OR which python

The venv module may not come preinstalled with Python, so install it first.

Syntax:

sudo apt install python-venv

For Example:

sudo apt install python3.13-venv

Step 2: Create a Virtual Environment Folder

Syntax:

python3 -m venv virtual_env_folder

For Example:

python3 -m venv python_env

Step 3: Activate the Virtual Environment

Syntax:

source virtual_env_folder/bin/activate

For Example:

source python_env/bin/activate

Once activated, the environment name appears at the beginning of your terminal prompt.

To deactivate: deactivate

🧱 Create Python virtual env. offline using .whl(Wheel files)

Step 0.1: Should have prior(already) downloaded all required Packages and Dependencies

(In another computer where internet is available)

Syntax:

pip download package_name –dest /path/to/folder

For Examples:

pip download numpy –dest ./packages

pip download pandas –dest ./packages

pip download matplotlib –dest ./packages

pip download seaborn –dest ./packages

pip download scikit-learn –dest ./packages

pip download jupyter –dest ./packages

This saves all required wheel files (.whl) and their dependencies to your specified folder(eg: packages).

Step 0.2 (Optional): Install venv Module only if not in your OS (One-time Setup)

To check current python version in your OS

python3 –version OR python3 –v

Syntax:

sudo apt install python-venv

For Example:

sudo apt install python3.13-venv

Step 1: Create a Virtual Environment Folder

Syntax:

python3 -m venv virtual_env_folder

For Example

python3 -m venv python_env

Step 2: Install Packages Offline

Syntax:

pip install –no-index –find-links=./packages package_name

For Example:

pip install –no-index –find-links=./packages numpy

pip install –no-index –find-links=./packages pandas

pip install –no-index –find-links=./packages matplotlib

pip install –no-index –find-links=./packages seaborn

pip install –no-index –find-links=./packages scikit-learn

pip install –no-index –find-links=./packages jupyter

Here –no-index prevents pip from connecting to PyPI, and –find-links specifies where your .whl files are located.

📄 Alternative way Installation using requirements.txt

If you have a list of major packages in requirements.txt, the u can use:

pip install –no-index –find-links=./packages -r requirements.txt

PIP Bonus Commands :

📄 To include all packages dependencies in requirements.txt file in your project

pip freeze > requirements.txt

📄 To Recreate the same environment on another system (another computer):

pip install -r requirements.txt

🔍 To check Dependencies of Any Package

pip show package_name | grep Requires

Setting up via, conda

To use “conda” package manager:

At first, u either have to install “Miniconda” OR “Anaconda”

Installing Miniconda on Linux OS (Ubuntu):

1. For viewing the Miniconda installer:

Official site link to download miniconda installer:

https://www.anaconda.com/docs/getting-started/miniconda/install https://repo.anaconda.com/miniconda/

Select the latest version miniconda for your OS, and right click on that link & copy the link address

2. To download the installer:

Open your terminal & run the following commands:

Syntax: wget copied_link_address

Example: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

Press “Enter”

NOTE: Miniconda installer file is downloaded in Home directory

3. To install the downloaded installer, run the following command:

Syntax: sh Miniconda-latest-Linux-version.sh

Example: sh Miniconda3-latest-Linux-x86_64.sh

Press “Enter”

4. Follow the prompts on the installer screens:

If you are unsure about any setting, accept the defaults. You can change them later.

Steps:

  1. press “Enter” to read license aggreement

  2. Then, press ‘q’ if u don’t want to read all of that

  3. Then, type “yes” and press “Enter”, to accept the license term
    Now, a message will be prompted on screen saying:

“Miniconda3 will now be installed into this location:

/home/username/miniconda3”

press “Enter” Now, a message will be prompted on screen saying:

“Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]”

type “yes” and press “Enter”

5. To verify conda installation:

SYNTAX: source /home/username/.bashrc Example: source /home/dhiraj/.bashrc

Press “Enter”

Hopefully, if everything has gone well, then u will be on conda (base) environment on terminal

NOTE: You can deactivate conda (base) environment using command:

conda deactivate NOTE: You can activate conda(base) environment using command:

conda activate base

To setup conda virtual environment in Linux(Ubuntu):

1. At first u should have already setup miniconda/anaconda in you pc.

(conda package manager should already be setup in your laptop)

2. Open a terminal and create a new conda virtual environment.

SYNTAX: conda create -n venv python=version

Example: conda create -n python_env python=3.10

3. Activate the above created conda virtual environment.

Example: conda activate python_env

4. Install any conda packages u want

Syntax: conda install package_name

OR

Example: conda install pandas

5. Deactive conda environment

conda deactivate

Conda Bonus Commands

  1. Command to create conda virtual environment

Syntax: conda create –n venv

Example: conda create –n python_env 2. Command to create conda virtual environment with specific “python version”

Syntax: conda create –n venv python=version

Example: conda create –n python_env python=3.13.3 3. Comamnd to create virtual env & install all dependencies/packages/requirements from a .txt/.yml file

Syntax: conda env create -n venv –file environment.txt

Example: conda env create -n python_env –file environment.txt

OR

Syntax: conda env create -n venv –file environment.yml

Example: conda env create -n python_env –file environment.yml 4. Activate conda virtual environment

Syntax: conda activate venv

Example: coda activate python_env 5. Deactivate conda virtual environment

conda deactivate 6. To Install a specific package

To install a specific package

Syntax: conda install package_name

Example: conda install pandas

To install a package with a specific version

Syntax: conda install package_name=package_version

Example: conda install jupyterlab=4.0.3 7. List out all the packages installed on any virtual environment

conda list 8. List out all virtual environments currently managed by conda

conda env list

🏁 Conclusion

  • Virtual environments are non-negotiable tools for Python developers.

  • Whether you’re building web apps with Django, data pipelines with Pandas, or ML models using TensorFlow, mastering venv ensures your workflow remains clean, portable, and reliable.

  • Code runs smoothly when environments are isolated.

  • The cleaner your virtual environment, the more predictable your code behavior.

WALLAAHH !!