packaging.python.org icon indicating copy to clipboard operation
packaging.python.org copied to clipboard

Create a discussion document about virtual environments

Open willingc opened this issue 2 years ago • 2 comments

Before you can start installing or using packages in your virtual environment you’ll need to activate it.

While a virtual environment is activated, pip will install packages into that specific environment.

Activating a virtual environment will put the virtual environment-specific python and pip executables into your shell's PATH.

Could these parts be updated as well? They are incorrect and actively misleading, leading to a lot of misunderstandings. A virtual environment can be used without activation. It depends on how / which pip is used. It would be fantastic if this guide could explain that in slightly more detail: Explicitly explain that activating is only (one way of) putting the the virtual environment-specific python and pip executables into the current shell's PATH. Specifying that path explicitly is also possible and often easier, preferred, clearer, more robust. The leaky abstraction "activation" and the lack of such an explanation is mystifying things unnecessarily, and leads to many problems and much confusion.

Originally posted by @petsuter in https://github.com/pypa/packaging.python.org/issues/1338#issuecomment-1793544750

willingc avatar Nov 04 '23 21:11 willingc

We might need to consider that some things might rely on the presence of the VIRTUAL_ENV environment variable, which is set when activating a virtual environment.

sinoroc avatar Nov 04 '23 21:11 sinoroc

Apparently the Windows py launcher is aware of VIRTUAL_ENV (already since Python 3.5, (PEP 486 ). Nice. 👍

The The Python Launcher for Unix is also aware of VIRUAL_ENV https://python-launcher.app/#activated-virtual-environment but also notes "In general, this feature is not needed. If you create a virtual environment in the current directory in a .venv directory, the Python Launcher will automatically use that. ... Otherwise it will search the parent directory, and so on, until it finds a .venv directory"

I think .venv directories are not automatically used by the Windows py launcher yet.

petsuter avatar Nov 05 '23 11:11 petsuter