Мне не удалось найти нигде задокументированную проблему, но если вы укажете install-option
в ~/.pip/pip.conf
, она не будет отменена virtualenv
. Я указываю --prefix=/path/to/somwhere
в install-option
из-за пользовательских ограничений на моем рабочем компьютере, и если он установлен, любые установки в venv (с включенным $PIP_RESPECT_VIRTUALENV
) по-прежнему устанавливаются по указанному пути автор: install-option
. Для меня это не было ожидаемым поведением, но я не уверен, что игнорирование pip.conf
является правильным курсом действий. Возможно, лучше всего задокументировать такое поведение. Еще одна странность заключается в том, что вы не можете удалить, находясь в virtualenv, поскольку пакет не установлен в venv, и pip не может его найти.
Это случилось со мной при использовании pip 1.4.1 и 1.5.6 и virtualenv 1.11.6.
Мое текущее исправление - установить $PIP_CONFIG_FILE
в /dev/null
помощью virtualenvwrapper
's postactivate
hook и отключить его в postdeactivate
.
Эта проблема все еще существует. В моем случае я бы хотел использовать --user
installs, когда не в venv (установив это в ~/.config/pip/pip.conf
, но "нормальные" (in-venv) установки, когда в venv (do --user
installs имеет смысл даже в venv?).
Два возможных решения (из которых только первое действительно может быть реализовано с помощью pip, но я могу начать обсуждение здесь):
~/.config/pip/pip-novenv.conf
или что-то еще), или--user
запретом на выполнение операций в venv (опять же, я не уверен, что --user
+ venv имеет смысл: есть только один ~/.local/lib/pythonX.Y
так что там вся изоляция нарушена).Проблема все еще присутствует в Python 3.5.3.
Довольно иронично и разочаровывающе, что если кто-то пытается быть осторожным со средой, вплоть до использования виртуальных сред и пользовательских установок в pip.conf, в итоге получается неработающая система.
Я пытался избежать использования членами команды sudo pip
. Становится все труднее.
Разве это не ошибка в virtualenv
- что он не устанавливает PIP_CONFIG_FILE=/dev/null
при использовании какой-либо опции?
О, меня это укусило сегодня.
Может кто-нибудь дать четкие инструкции о том, как это воспроизвести?
Самый полезный комментарий
Мое текущее исправление - установить
$PIP_CONFIG_FILE
в/dev/null
помощьюvirtualenvwrapper
'spostactivate
hook и отключить его вpostdeactivate
.