Мне нужно использовать python на большом сервере, где у меня нет доступа root. Я хочу использовать более новую версию numpy, чем тот, который установлен на глобальном уровне на машине. 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-site-packages, например:
virtualenv --no-site-packages my_personal_python
Когда я использую этот флаг, тогда импорт ведет себя так, как я желаю. Но я не хочу использовать этот флаг, потому что я не хочу повторно устанавливать все пакеты локально, я просто хочу переопределить пару из них.
(Я использую python 2.6, virtualenv 1.6.1, а переменная PYTHONPATH на моей машине не установлена.)
Обновление. Даже если я добавлю каталог сайтов-пакетов из виртуальной среды в начало пути python, numpy не будет импортирован из этого местоположения (хотя другие пакеты импортируются из этого местоположения), Возможно, эта проблема специфична для numpy и не возникает с пакетами вообще.