Мне нужно использовать python на большом сервере, где у меня нет доступа root. Я хочу использовать более новую версию numpy, чем тот, который установлен на глобальном уровне на машине. virtualenv
предназначен именно для этой цели, и я создаю свою виртуальную среду и активировать его с помощью следующих команд:Как получить virtualenv, чтобы предпочесть его локальные библиотеки по глобальным библиотекам
virtualenv my_personal_python
source my_personal_python/bin/activate
я установить новую версию библиотеки, что я заинтересован в использовании
pip install numpy==1.6.0
Проблема в том, что когда я импортирую numpy, он по-прежнему импортирует устаревшую глобальную версию, а не ту, которая установлена в каталоге my_personal_python/lib/python2.6/site-packacges
виртуальной среды.
Я уже знал одно из возможных решений, тем --no-сайт-пакеты флаг, как в:
virtualenv --no-site-packages my_personal_python
Когда я использую этот флаг, то импорт ведет себя, как я хочу. Но я не хочу использовать этот флаг, потому что я не хочу повторно устанавливать все пакеты локально, я просто хочу переопределить пару из них.
(Я использую Python 2.6, virtualenv 1.6.1, а переменная PYTHONPATH на моей машине не установлен.)
Update Даже если я добавить каталог сайтов-пакеты из виртуальной среды в начало пути python, numpy не импортируется из этого местоположения (хотя другие пакеты импортируются из этого местоположения). Возможно, эта проблема специфична для numpy и не возникает с пакетами в целом.
AFAIK, он должен работать так, как вы ожидаете. Может быть, это ошибка в старой версии virtualenv, которая предположительно установлена на этом компьютере ... –
не уверен, что это проблема, но знает ли протокол об использовании активированной виртуальной среды? Проверьте и проверьте, установлено ли numpy 1.6.0 в ваших глобальных пакетах сайтов. – mklauber
pip знает, как использовать виртуальную среду, и правильно установил версию 1.6.0 в каталог сайта-пакетов виртуальной среды. Глобальная версия numpy - 1.4.0. – conradlee