Using a virtual environment for Project dev in Python is a good practice. venv is module that is available since Python 3.3. It can help us to manage the virtual environment in a simple way.

Manage virtual env

Create a virtual env

Normally, we create a virtual environment under the project root directory:

python -m venv paht/to/project-root/venv

The name we give to this virtual env is venv. Under the directory venv, there are different files and folders. Under my macOS system, it has the following files:

bin/        include/    lib/        pyvenv.cfg

Activate and de-activate

To activate the virtual environment, run this command:

source venv/bin/activate

Then your shell prompt changes and tells you are now in the virtual environment. When the environment has been activated, the VIRTUAL_ENV env variable is set to the path of the environment.

To deactivate the virtual environment, just run deactivate.


Make jupyter work with virtual env

First, we need to install the ipykernel package inside the virtual env:

pip install ipykernel

Then we can generate a kernelspec for jupyter:

python -m ipykernel install --user --name <spec-name>
# output: Installed kernelspec venv in /Users/<your-user-name>/Library/Jupyter/kernels/<spec-name>

Now we can open the notebook:

jupyter notebook <your-notebook-name>.ipynb

In the opened browser tab for jupyter, we can click the Kernel menu and click change kernel to switch the kernel.

Kernelspec management

To list your kernelspecs:

jupyter kernelspec list

To remove the virtual env spec:

jupyter kernelspec remove <spec-name>