pip virtualenv сбрасывает путь после повторной активации

#python #path #pip #virtualenv

#python #путь #pip #virtualenv

Вопрос:

Я установил pip3 virtualenv и установил на него пару пакетов, активировав virtualenv. В это время команда which python указывает путь к virtualenv. допустим , ..../env/bin/python

Но после деактивации и повторного ввода пути (повторной активации) which python используется глобальный путь /usr/bin/python , который не позволяет использовать пакеты, которые я установил в virtualenv. Любая мысль об этом?

Комментарии:

1. Вот как это должно работать. Я не думаю, что вы поняли, как pip работают изолированные среды.

2. Да, DroidX86 прав, чего вы ожидаете? Вы можете использовать пакеты виртуальной среды, только пока она активирована.

3. Я понимаю, как именно они работают. глобальная PATH переменная изменяется после активации. Но он по — прежнему использует глобальный путь python ниже /usr/bin . Возможно, вы не понимаете вопроса. Прочтите еще раз

Ответ №1:

Обычно этого не происходит. после повторной активации он должен выбрать из virtualenv python.

Мои два цента.

  1. Virtualenv добавляет python в конец переменной PATH. таким образом, usr /bin /python будет впереди найден при запуске.
  2. Это также может произойти, если в вашем файле .bash_profile возникли проблемы. Это может быть также, если virtual env создан в python3, и по умолчанию он будет иметь python2.7

Итак, вам нужно проверить оба пути и оба env global и virtual env one.

Ответ №2:

Это была глупая ошибка. virtualenv поддерживает скрипт в каталоге ..../env/bin с именем activate , а файл использует абсолютный путь к export PATH и угадывает, что может пойти не так.

Допустим, абсолют PATH равен /home/user/test/env/bin

И если вы переименуете каталог test в test2 . Активирующий файл по-прежнему использует старый абсолютный путь. Поэтому вам нужно вручную изменить значение PATH .../env/bin/activate и изменить VIRTUAL_ENV переменную на ваш новый абсолютный путь