Revert the `--no-site-packages` option with virtualenv

PythonVirtualenv

Python Problem Overview


I have created a virtualenv using the --no-site-packages option and installed lots of libraries. Now I would like to revert the --no-site-packages option and use also the global packages.

Can I do that without recreating the virtualenv?

More precisely:

I wonder what exactly happens when creating a virtualenv using the --no-site-packages option as opposed to not using that option.

If I know what happens then I can figure out how to undo it.

Python Solutions


Solution 1 - Python

Try removing (or renaming) the file no-global-site-packages.txt in your Lib folder under your virtual environment.

Where venv is the name of your virtual environment, and python3.4 corresponds to whichever version of python involved, for example:

$ rm venv/lib/python3.4/no-global-site-packages.txt

And if you change your mind and want to put it back:

$ touch venv/lib/python3.4/no-global-site-packages.txt

Note: If you don't see the above file, then you have a newer version of virtualenv. You'll want to follow this answer instead

Solution 2 - Python

At least for Python 3.5.2, there is pyvenv.cfg file in the root of virtualenv directory. All you need to do is to change include-system-site-packages flag from false to true:

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2

Solution 3 - Python

Go to your venv folder and open pyvenv.cfg. (E.g. if your virtual environment is called myenv then the file will be located at myenv\pyvenv.cfg)

You'll see a boolean setting called include-system-site-packages

Set that setting to true to use global packages

If you want to disable using global packages, just set that setting to false instead.

Solution 4 - Python

When using virtualenvwrapper to manage virtualenvs, you can use the shell function toggleglobalsitepackages to switch between using and not using site packages.

Solution 5 - Python

Try adding a symlink between /virtualenv_root/lib/ and /path/to/desired/site-packages/

Solution 6 - Python

Where 'myvenv' is the name of your virtual environment, and python3.8, like mine, for example, all you need to do in command line is:

$ python3 -m venv --system-site-packages myvenv

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOlivier VerdierView Question on Stackoverflow
Solution 1 - PythonarsView Answer on Stackoverflow
Solution 2 - PythonkotrfaView Answer on Stackoverflow
Solution 3 - PythonZain RizviView Answer on Stackoverflow
Solution 4 - PythonAdaephonView Answer on Stackoverflow
Solution 5 - PythonTim McNamaraView Answer on Stackoverflow
Solution 6 - PythonalexzorgoView Answer on Stackoverflow