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

Я пытаюсь использовать pip для установки пакета локально в ~/.local . Проблема в том, что пакет (в более старой версии) уже доступен по всему миру в системе. Несмотря на то, что глобальный каталог пакетов python не находится в моем PYTHONPATH , pip все еще отказывается устанавливать, считая, что требование пакета удовлетворено. Это похоже на проблему, описанную здесь, за исключением того, что я не использую sudo поэтому решение не применяется: pip – Требование уже выполнено?

Если я сделаю:

 pip install --user numpy 

В нем говорится:

 Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg 

Однако, /usr/local/lib/... не входит в мой PYTHONPATH . Единственное в PYTHONPATH ~/.local .

Если я попытаюсь сделать:

 pip install --user --upgrade numpy 

Он загружает numpy и компилирует его, а затем думает, что я делаю глобальную установку, несмотря на флаг -ser, и я получаю:

 Installing collected packages: numpy Found existing installation: numpy 1.6.2 Uninstalling numpy: Exception: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main status = self.run(options, args) File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 261, in run requirement_set.install(install_options, global_options) File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1162, in install requirement.uninstall(auto_confirm=True) File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 495, in uninstall paths_to_remove.remove(auto_confirm) File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1492, in remove renames(path, new_path) File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/util.py", line 273, in renames shutil.move(old, new) File "/usr/lib/python2.7/shutil.py", line 300, in move os.unlink(src) OSError: [Errno 13] Permission denied: '/usr/bin/f2py' 

Как это можно зафиксировать? Я не уверен, почему он пытается делать все, что требует глобальных разрешений, когда он передан флаг --user .

Есть ли способ сказать, чтобы использовать только ~/.local и игнорировать все остальное в системе? (Я не хочу использовать virtualenv! Здесь нет необходимости, я не хочу несколько сред, только один.)

One Solution collect form web for “используя pip для локального размещения пакетов, несмотря на удовлетворенные глобальные требования”

Цитируя Маркуса Смита (сторонник пипса):

Если вы считаете, что глобальный сайт устарел, и хотите получить последнюю информацию на сайте пользователя, используйте:
pip install --upgrade --user SomePackage

Поскольку (…) пакет (в старой версии) уже доступен в глобальном масштабе в системе, вы должны использовать опцию --upgrade в соответствии с замечанием Маркуса. Удаление пакета numpy системы, вероятно, является ошибкой в ​​версии используемого вами пипа (1.2.1). Попробуйте текущую версию, так как многие проблемы, связанные с опцией --user были исправлены в версиях 1.3 и 1.4

РЕДАКТИРОВАТЬ

Маркус Смит указывает на конкретную проблему в своем последнем комментарии:

pip 1.3 имеет # 705, что имеет решающее значение для использования –user и –upgrade вместе.

Python - лучший язык программирования в мире.