Python: выберите одну из нескольких версий установленных модулей

В моей системе несколько модулей установлены несколько раз. Чтобы привести пример,numpy 1.6.1 устанавливается по стандартному пути в/usr/lib/python2.7/dist-packagesи у меня есть обновленная версияnumpy 1.8.0 установлен в/local/python/lib/python2.7/site-packages/.

Причина, по которой я не могу просто удалить старую версию, заключается в том, что у меня нет прав что-либо изменить на моем рабочем компьютере. Однако мне нужно использовать новую версию NumPy.

я добавил/local/python/lib/python2.7/site-packages/ к моемуPYTHONPATH, К сожалению, это не помогает, так как/usr/lib/python2.7/dist-packages вставляется в путь первым и, следовательно,numpy 1.6.1 будет загружен. Вот пример:

>>> import os
>>> print os.environ['PYTHONPATH']
/local/python/lib/python2.7/site-packages
>>> import pprint
>>> import sys
>>> pprint.pprint(sys.path)
['',
 '/local/python/lib/python2.7/site-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg',
 '/local/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg',
 '~/.local/lib/python2.7/site-packages/setuptools-3.4.4-py2.7.egg',
 '~/.local/lib/python2.7/site-packages/mpldatacursor-0.5_dev-py2.7.egg',
 '/usr/lib/python2.7/dist-packages',
 '/local/python/lib/python2.7/site-packages',
 '/usr/lib/python2.7',
 ...,
 '~/.local/lib/python2.7/dist-packages', 
 ...]

Итак, похоже, что порядок импорта

Текущий каталогяйца изPYTHONPATHяйца из локального модуля пути (~/.local/lib/python2.7/site-packages/*.egg)общесистемный путь модуля (~/usr/lib/python2.7/dist-packages/)каталоги отPYTHONPATHпромежуточные пути (для краткости опущены)каталог базы пользователей (~/.local/lib/python2.7/site-packages/)

Моя проблема в том, что мне нужно было бы поместить пункт 5. перед пунктами 3. и 4., чтобы мой код работал правильно. Прямо сейчас, если я импортирую модуль, который был скомпилирован сnumpy 1.8.0 от/local/* каталог, и этот модуль импортирует NumPy, он по-прежнему будет принимать NUMPY из/usr/* каталог и сбой.

Я обошел эту проблему, поместив что-то вроде этого в мои сценарии:

import sys
sys.path.insert(0, '/local/python/lib/python2.7/site-packages/')

Таким образом, я могу заставить Python использовать правильный порядок импорта, но, конечно, это не решение, так как мне придется сделать это вкаждый сценарий.

Ответы на вопрос(3)

Ваш ответ на вопрос