Python: Wählen Sie eine von mehreren installierten Modulversionen aus

Auf meinem System sind mehrere Module mehrfach installiert. Um ein Beispiel zu geben,numpy 1.6.1 ist im Standardpfad unter installiert/usr/lib/python2.7/dist-packagesund ich habe eine aktualisierte Version vonnumpy 1.8.0 installiert bei/local/python/lib/python2.7/site-packages/.

Der Grund, warum ich die alte Version nicht einfach entfernen kann, ist, dass ich keine Berechtigung habe, irgendetwas auf meinem Arbeitscomputer zu ändern. Ich muss jedoch die neue numpy-Version verwenden.

Ich habe hinzugefügt/local/python/lib/python2.7/site-packages/ zu meinemPYTHONPATH. Das hilft leider nicht, da/usr/lib/python2.7/dist-packages wird zuerst in den Pfad eingefügt und dahernumpy 1.6.1 wird geladen. Hier ist ein Beispiel:

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

So scheint es, dass die Importreihenfolge ist

Aktuelles VerzeichnisEier ausPYTHONPATHEier vom lokalen Modulpfad (~/.local/lib/python2.7/site-packages/*.egg)systemweiter Modulpfad (~/usr/lib/python2.7/dist-packages/)Verzeichnisse vonPYTHONPATHZwischenpfade (der Kürze halber weggelassen)Userbase-Verzeichnis (~/.local/lib/python2.7/site-packages/)

Mein Problem ist, dass ich Punkt 5. vor Punkt 3. und 4. setzen müsste, damit mein Code richtig funktioniert. Im Moment, wenn ich ein Modul importiere, gegen das kompiliert wurdenumpy 1.8.0 von dem/local/* Verzeichnis, und dieses Modul importiert Numpy, es wird immer noch Numpy aus dem/usr/* Verzeichnis und scheitern.

Ich habe dieses Problem umgangen, indem ich Folgendes in meine Skripte eingefügt habe:

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

Dadurch kann ich Python zwingen, die richtige Importreihenfolge zu verwenden, aber dies ist natürlich keine Lösung, da ich dies in ausführen müsstejedes einzelne Skript.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage