Python: selecione uma das várias versões de módulo instaladas

No meu sistema, tenho vários módulos instalados várias vezes. Para dar um exemplo,numpy 1.6.1 está instalado no caminho padrão em/usr/lib/python2.7/dist-packagese eu tenho uma versão atualizada donumpy 1.8.0 instalado em/local/python/lib/python2.7/site-packages/.

O motivo pelo qual não posso simplesmente remover a versão antiga é que não tenho permissões para alterar nada no meu computador de trabalho. No entanto, eu preciso usar a nova versão numpy.

Eu adicionei/local/python/lib/python2.7/site-packages/ para o meuPYTHONPATH. Infelizmente, isso não ajuda, pois/usr/lib/python2.7/dist-packages é inserido no caminho primeiro e, portanto,numpy 1.6.1 será carregado. Aqui está um exemplo:

>>> 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', 
 ...]

Portanto, parece que a ordem de importação é

diretório atualovos dePYTHONPATHovos do caminho do módulo local (~/.local/lib/python2.7/site-packages/*.egg)caminho do módulo em todo o sistema (~/usr/lib/python2.7/dist-packages/)diretórios dePYTHONPATHcaminhos intermediários (omitidos por questões de brevidade)diretório userbase (~/.local/lib/python2.7/site-packages/)

Meu problema é que eu precisaria colocar o item 5. antes dos itens 3. e 4. para que meu código funcionasse corretamente. No momento, se eu importar um módulo que foi compiladonumpy 1.8.0 de/local/* diretório, e este módulo importa numpy, ele ainda será usado no diretório/usr/* diretório e falhar.

Eu contornei esse problema colocando algo assim nos meus scripts:

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

Dessa forma, posso forçar o Python a usar a ordem de importação correta, mas é claro que isso não é uma solução, pois eu precisaria fazer isso emtodo script.

questionAnswers(3)

yourAnswerToTheQuestion