If you work with Python, you probably already know about virtual environments. I’ve only recently started working with Python, and if you’re new to Python as well, I hope this will be helpful.
In Python, a virtual environment is like a sandbox where you can install and handle Python packages without affecting other projects or the Python installation on your computer. This is very helpful when different projects need different copies of the same package.
Native Virtual Environments
Even if you’re new to Python, you’ve probably met PIP. PIP is a package manager for Python packages (or modules). The name pip is an acronym: “pip installs packages”.
Install the virtualenv package
virtualenv package is used to create virtual environments. You can install it using PIP. Here’s the command to install
pip install virtualenv
Make sure to run this command in your terminal or command prompt. If you’re on a Mac or Linux machine and you encounter permission issues, you might need to use
sudo at the beginning of the command.
Create a virtual environment
Once you have
virtualenv installed, you can create a new virtual environment. Go to your project’s directory in the terminal and use the following command:
This will create a new virtual environment named “venv” in your project’s directory. (You can replace “venv” with any name you like.) The new environment will have the same Python version you used to create it and an independent copy of the Python binary and PIP.
Activate the virtual environment
Before you start using the virtual environment, you need to activate it. The command to do this depends on your operating system.
On Mac OSx
If the activation is successful, you’ll see the name of your virtual environment in the terminal, something like
Now that the virtual environment is activated, any Python packages that you install using PIP will be installed in this environment. For example, to install the
requests package, you would use:
pip install requests
These packages will not interfere with your system Python or other virtual environments.
Deactivate the virtual environment
Once you’re done working in the virtual environment, you can deactivate it and return to your system Python by simply typing:
This command will only work if the virtual environment is currently active. After running this, you’ll no longer see the
(venv) in your terminal.
“Wheel” is a built distribution format for Python packages, introduced as a more efficient and faster alternative to “Egg” format. A “wheel” file (
.whl) is a ZIP-format archive with a specially formatted filename and the
.whl extension. It contains a complete version of a Python package that is ready to install.
When you use PIP to install a package, it will look for a wheel file for the package in the Python Package Index (PyPI) by default. If a wheel is available, PIP will download and install the wheel; if not, it will download the source code and attempt to build the package.
You can also explicitly install a wheel file you’ve downloaded. Let’s say you’ve downloaded a wheel file called
example_package-1.0.0-py3-none-any.whl to your local directory. You can install it using PIP with this command:
pip install example_package-1.0.0-py3-none-any.whl
To create a wheel file for your own Python package, you can use the wheel package. First, you’ll need to install it with PIP:
pip install wheel
Then, navigate to the directory containing your
setup.py file and run:
python setup.py bdist_wheel
This command will create a
dist directory in your current directory and place the wheel file for your package in it.
conda is a cross-language package manager and environment management system that can manage packages for multiple languages, not just Python. It was developed by Anaconda, Inc., primarily for the data science and machine learning fields. Here are some reasons why someone might choose conda over virtualenv:
- Cross-Language Support – conda can manage libraries for multiple languages which is beneficial if you’re working in a multi-language project or if you’re using Python libraries that have non-Python dependencies. For example, conda can manage packages for R, Java, C/C++, and more.
Binary Dependencies – Many scientific and data analysis Python packages (like NumPy, SciPy, and TensorFlow) have C or Fortran dependencies. Installing these packages using pip can sometimes be challenging because it involves compiling these dependencies, which requires having the correct build tools on your system. conda, on the other hand, handles these binary dependencies more gracefully because it deals with pre-compiled binary packages, making the installation process smoother and more straightforward.
Integration with Anaconda Distribution – If you’re using the Anaconda Python distribution, which is geared towards data science and machine learning and comes pre-loaded with many useful packages, conda is the native package manager and works seamlessly within that ecosystem.
Environment Management – conda not only manages packages but also environments. This makes it easy to create separate environments with different versions of Python and/or packages installed. conda environments also include more than just Python packages (they also handle non-Python executables), which can be useful for complex projects.
Channel Feature – conda supports channels that are the locations where packages are stored. This is a powerful feature because it allows the community to contribute to the packages available to conda users.
That said, virtualenv might still be a better choice for simpler Python projects, especially if you’re only using pure Python packages, or if you’re working on a project that needs to be easily deployable on other systems without Anaconda installed. It’s also worth mentioning that conda and PIP/virtualenv can be used together in many scenarios, giving you the flexibility to leverage the strengths of both.
The easiest way to install conda is by installing Anaconda or Miniconda. Anaconda comes with a lot of Python packages geared towards data science, whereas Miniconda is a minimal installer that only includes Python and conda, and lets you install other packages manually. For most purposes, Miniconda is sufficient and takes up less disk space. Here’s how you can install it:
Download and Install Miniconda
Go to the Miniconda download page (https://docs.conda.io/en/latest/miniconda.html) and download the installer for your operating system. After downloading, run the installer.
Verify the Installation
You can verify the installation by opening a new terminal window (or command prompt on Windows) and typing:
You should see the version of conda that you installed.
Now, let’s create and manage environments with conda. Just like Python’s virtualenv, conda allows you to create isolated environments:
Create a new environment
To create a new environment, use the
conda create command followed by the
--name option and the name of your environment. For example, to create an environment named
myenv, you would use:
conda create --name myenv
This will create a new environment with the same Python version that you used to create it.
Create a new environment with a specific Python version
If you want to create a new environment with a specific version of Python, you can specify the version. For example, to create a new environment with Python 3.7, you would use:
conda create --name myenv python=3.7
Activate the environment
Before you start using the environment, you need to activate it. The command to do this is the same on all operating systems:
conda activate myenv
If the activation is successful, you’ll see the name of your environment in the terminal, something like
Now that the environment is activated, any Python packages that you install using conda install will be installed in this environment. For example, to install numpy, you would use:
conda install numpy
This command will only work if the environment is currently active.
List all environments
If you want to see all of the conda environments you’ve created, you can use:
conda env list
Removing a conda environment
To completely remove a conda environment, you can use the
conda env remove command followed by the
--name option and the name of the environment you want to remove.
Here’s an example where we remove an environment named
conda env remove --name myenv
Running this command will delete the
myenv environment and all of its contents, including installed packages.
Be careful when using this command, as it cannot be undone. Once an environment is removed, it’s gone for good unless you recreate it.
And we're done.
I hope this overview provided a foundation for understanding Python package management and environment isolation, both of which are critical for effective and efficient Python project development.
If you have any questions or comments, please hit me up in the comment section below.