Как сбросить virtualenv и pip? - PullRequest
       16

Как сбросить virtualenv и pip?

6 голосов
/ 06 февраля 2011

Я установил virtualenv на моем сервере Ubuntu 10.04.

Теперь, когда я делаю pip freeze, он показывает мне следующие пакеты:

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

Когда я делаю "pip uninstall Django", он говорит:

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

В идеале этоследует удалить Django, но это не так.Я все еще могу видеть те же пакеты, когда я делаю «pip freeze».

Теперь потерпите меня, другая странная вещь в том, что когда я создаю virtualenv, а затем делаю «pip freeze» внутри него, я вижу толькоодин пакет, и это "wsgiref", что странно, потому что в идеале он должен быть пустым.

Кроме того, несмотря на создание этого virtualenv с --no-site-packages, я все еще могу создать новый проект django с помощью "django-admin.py startproject ".

Когда я запускаю интерпретатор python внутри этого virtualenv и выполняю" import django ", он выдает ошибку" Нет модуля с именем django ".

Также, когда я пытаюсьчтобы установить "pip install Django" внутри virtualenv, он запрашивает разрешения sudo, что не должно происходить в идеале.

Как мне разобраться в этом беспорядке.Есть ли способ просто сбросить все pep и virtualenv?

Ответы [ 2 ]

1 голос
/ 16 сентября 2018

Этот вопрос старый, но он попал на первую полосу, поэтому трудно определить, какие версии pip и virtualenv вы используете.

Есть несколько вещей, которые мы можем сделать, чтобы исправить это, тем не менее.

  1. Выйдите из всех virtualenv и проверьте свой $PYTHONPATH. Убедитесь, что он пуст; еще запустить unset PYTHONPATH.
  2. Создайте новый virtualenv на myenv, используя virtualenv --no-site-packages myenv.
  3. Активируйте myenv и снова проверьте $PYTHONPATH. Он должен иметь только myenv.
  4. Запустите pip с абсолютным путем, например myenv/bin/pip freeze.
  5. Если pip недоступно внутри вашего virtualenv, возможно, вам придется установить его вручную.

Related: virtualenv --no-site-packages и pip все еще находят глобальные пакеты?

Наконец, запустите оболочку Python, используя myenv/bin/python, затем запустите

>>> import sys
>>> sys.path

Если pip может найти wsgiref, то wsgiref должен быть в одном из путей в sys.path. Используйте эту подсказку!

0 голосов
/ 11 апреля 2018

Насколько я могу судить, цель * venv only состоит в управлении зависимостями.

Вы можете просто набрать deactivate venv, удалить его и создать новый, используя virtualenv venv; source venv/bin/activate.

. Это даст вам новый старт.

...