问题
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?
回答1:
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.
回答2:
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.
- Exit all virtualenvs, and check your
$PYTHONPATH
. Make sure it's empty; else rununset PYTHONPATH
. - Create a fresh virtualenv at
myenv
usingvirtualenv --no-site-packages myenv
. - Activate
myenv
and check your$PYTHONPATH
again. It should only havemyenv
. - Run
pip
with an absolute path, like somyenv/bin/pip freeze
. - 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!
回答3:
Best way to reset the virtual environment.
Windows environment use the below command:
pip freeze > unins && pip uninstall -y -r unins && del unins
Linux environemnt use the below command:
pip freeze > unins && pip uninstall -y -r unins && rm unins
来源:https://stackoverflow.com/questions/4913561/how-to-reset-virtualenv-and-pip