How to reset virtualenv and pip?

53.5k Views Asked by At

I installed virtualenv on my Ubuntu 10.04 server.

Now when I do pip freeze it shows me the following packages:

Django==1.2.4
distribute==0.6.10
python-apt==0.7.94.2ubuntu6.2
virtualenv==1.5.1
wsgiref==0.1.2

When I do "pip uninstall Django" it says:

pip uninstall Django
Uninstalling Django:
Proceed (y/n)? y
Successfully uninstalled Django

Ideally this should uninstall Django but it doesn't. I can still see the same packages when I do "pip freeze".

Now bear with me, the other weird thing is that when I create a virtualenv and then do "pip freeze" inside it, I see only one package and that is "wsgiref" which is weird because it should ideally be blank.

Also, in spite of creating this virtualenv with --no-site-packages I can still create a new django project with "django-admin.py startproject".

When I start python interpreter inside this virtualenv and do "import django" it gives me the error "No module named django".

Also when I try to install "pip install Django" inside the virtualenv it asks for sudo permissions which shouldn't happen ideally.

How do I sort out this mess. Any way to just reset everything pep and virtualenv?

3

There are 3 best solutions below

0
Brad Johnson On

As far as I can tell, the only purpose of a venv is to manage dependencies.

You should be safe to just deactivate the venv, delete it, and create a new one using virtualenv venv; source venv/bin/activate.

This will give you a fresh start.

0
James Lim On

This question is old, but it got bumped to the front page, so it's hard to discern which versions of pip and virtualenv you are using.

There are a few things we can do to straighten this, nonetheless.

  1. Exit all virtualenvs, and check your $PYTHONPATH. Make sure it's empty; else run unset PYTHONPATH.
  2. Create a fresh virtualenv at myenv using virtualenv --no-site-packages myenv.
  3. Activate myenv and check your $PYTHONPATH again. It should only have myenv.
  4. Run pip with an absolute path, like so myenv/bin/pip freeze.
  5. If pip is not available inside your virtualenv, you may have to install it manually.

Related: virtualenv --no-site-packages and pip still finding global packages?

Finally, start a python shell using myenv/bin/python, then run:

>>> import sys
>>> sys.path

If pip can find wsgiref, then wsgiref must be in one of the paths in sys.path. Use that clue!

0
TacoEater On

You can just delete your .venv file to remove all dependencies and then run python3 -m venv .venv for a fresh virtual environment.