2010-06-01 4 views
12

Ich habe ein benutzerdefiniertes Modul in einem der Verzeichnisse in meinem PYTHONPATH mit dem gleichen Namen wie eine der Standard-Bibliothek Module, so dass wenn ich import module_name, dieses Modul geladen wird. Wenn ich das ursprüngliche Standardbibliotheksmodul verwenden möchte, gibt es eine Möglichkeit, Python zum Importieren aus der Standardbibliothek und nicht aus dem PYTHONPATH-Verzeichnis zu zwingen, ohne das benutzerdefinierte Modul umzubenennen und jede Referenz auf den neuen Namen zu setzen?Force-Import-Modul aus Python-Standard-Bibliothek anstelle von PYTHONPATH default

+0

Was ist so schlimm an der Umbenennung Ihres Moduls? –

+0

Es würde nur bedeuten, Änderungen an Dutzenden von Dateien vorzunehmen. Es klingt, als wäre es die beste Lösung. – jrdioko

+0

Sie haben 'grep', also sollte es nicht zu schwer sein, jeden zu finden und zu reparieren. –

Antwort

11

Die ideale Lösung wäre Ihr Modul etwas umbenennen nicht in der Standardbibliothek.

Sie können auch switch absolute imports on, wenn Sie auf Python sind 2.5+:

from __future__ import absolute_import 
+0

Wie würde ich relative Importe verwenden, um die Standardbibliotheksversion zu erhalten? – jrdioko

+0

Ich missverstanden Ihre Frage, bearbeitete Antwort. –

+0

Das wird nicht wirklich helfen? –

5

Sie können das Modul wählen Sie mit dem imp Modul importiert werden soll:

import imp 
mymodule = imp.load_module(name, file, pathname, description) 
9

nicht.

Wenn Sie versehentlich einen Standard-Bibliotheksmodulnamen gewählt haben, ändern Sie den Modulnamen, um den Konflikt zu beenden.

+0

Dies ist wahrscheinlich die beste Lösung, um bei besuchenden Programmierern keine Verwirrung zu stiften, und die Tatsache, dass sich das Verhalten beim Importieren eines Moduls, das noch kein relativer Import war, nicht ändert, wenn absolute Importe aktiviert sind. –

-1

Der beste Weg, das zu tun, ist Ihr Projekt in einem Verzeichnis lassen Sie sich sagen „myproject“ setzen, die auf residieren:

/home/me/myproject

einen symbolischen Link zu myproject Verzeichnis einen der Stellen die Standard-python Pfade, zum Beispiel:

# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject

Nun, wenn Sie wollen Um ein Modul in Ihr Projekt zu importieren, öffnen Sie einfach einen Python-Interpreter.

>>> from myproject.mymodule import *

Es wird wie ein Zauber funktionieren.

Eine letzte Sache, benennen Sie Ihr Projekt nicht die gleichen wie die im Python-Pfad gefunden, so dass Sie keine Probleme beim Importieren haben.

+0

Ein besserer Weg wäre 'PYTHONPATH'. Verwenden Sie nicht 'from x import *', da es statische Analysewerkzeuge verwirrt und es schwieriger zu verstehen ist, woher eine Variable kommt. – bfontaine