Это похоже на поврежденное состояние где-то.pip + virtualenv: поврежденное состояние
Во-первых, в virtualenv, pip freeze
сообщает, что IPython установлен
% workon myvenv
(myvenv)% pip freeze | grep ipython
ipython==0.12.1
... но ipython
видел изнутри virtualenv является не тот, который установлен под virtualenv:
(myvenv)% which ipython
/usr/bin/ipython
Действительно, если вы попытаетесь «удалить» копию ipython, установленную под virtualenv, pip откажется так:
(myvenv)% pip uninstall ipython
Not uninstalling ipython at /usr/lib/python2.7/dist-packages, outside environment /home/yt/.virtualenvs/myvenv
Он будет также отказаться от установки новой копии:
(myvenv)% pip install ipython
Requirement already satisfied (use --upgrade to upgrade): ipython in /usr/lib/python2.7/dist-packages
Cleaning up...
BTW, копии pip
и python
видели в virtualenv являются
(myvenv)% which pip
/home/yt/.virtualenvs/myvenv/bin/pip
(myvenv)% which python
/home/yt/.virtualenvs/myvenv/bin/python
Очевидно, что некоторое состояние испорченный здесь, и я хотел бы выяснить, что. Я подчеркиваю, что меня в первую очередь интересует первый, выясняя, что не так, и только второй, фиксируя его. IOW, меня интересует проблема с устранением неполадок проблема, и не заинтересован в «исправлении» проблемы путем слепых проб и ошибок. По моему опыту, «исправления», возникающие в результате такого слепого путаницы, очевидны, и на самом деле часто делают основной клубок еще хуже.
Мои непосредственные вопросы:
- почему
pip
смотрит на/usr/lib/python2.7/dist-packages
даже если virtualenv активен? - Почему
pip freeze
показатьipython==0.12.1
, хотя нетipython
под виртуальный?
Спасибо. «... Вы, должно быть, создали virtualenv, чтобы он мог видеть другие пакеты». Не знаете ли вы, где этот параметр конфигурации сохранен? – kjo
Когда вы создаете virtualenv, вы можете использовать флаги '--system-site-packages' или' -no-site-packages'. По умолчанию, чтобы разрешить пакеты системных сайтов, он изменился, чтобы исключить их примерно год назад, я думаю. –
есть также флаг '--ignore-installed', который позволяет вам устанавливать новые пакеты снова, без обновления (полезно для установки' --user' или venv, когда другая версия уже установлена в системном масштабе, Не хочу прикасаться). – minrk