Ich versuche, den sys.path in einer meiner Python-Dateien zu ändern, um einige zu haben bestimmte Bibliotheken im Suchpfad des Moduls (dies ist möglicherweise nicht der beste Weg) aber ...). Wenn ich mehrere Pfade vor sys.path anlege, berücksichtigt mein Skript diese Pfade für zukünftige Importe nicht. Wenn ich eine ganz neue Liste mache, die diese Bibliotheken enthält, die ich benötige, und diese Liste sys.path zuweisen, werden diese Importe berücksichtigt. Ist das das richtige Verhalten? Ich benutze Python 2.5.4. Könnte es etwas aus meiner Umgebung sein, das zu einem solchen Verhalten führen könnte?
Einige Code-Schnipsel:
Wenn ich mache
es funktioniert nicht. Es berücksichtigt die Pfade nicht.
Wenn ich es tue
es funktioniert.
Danke
Sie müssen wirklich Code schreiben, damit wir Ihnen helfen können. Allerdings kann ich eine fundierte Vermutung abgeben. Sie sagen, wenn Sie eine ganz neue Liste erstellen und sie sys.path zuweisen, dann funktioniert es. Ich nehme an, du meinst, dass du so etwas machst.
%Vor%Aber wenn Sie die Pfade am Anfang einfügen, funktioniert es nicht. Meine Vermutung ist, dass Sie die Einfügemethode wie folgt verwenden
%Vor%Wenn ja, dann ist das falsch. Dies würde eine Liste erstellen, die aussieht wie
%Vor%Sie sollten stattdessen
sagen %Vor%was dir geben wird
%Vor%Aber das ist alles Rätselraten, bis Sie Ihren Code veröffentlichen.
Wie fügen Sie die zusätzlichen Pfade ein?
Das Ändern des Pfades erfolgt auf die gleiche Weise, wie jede andere Liste in Python geändert wird - obwohl es sich anhört, als würden Sie es einfach überlisten, indem Sie es neu zuweisen.
Beispiel für die Aktualisierung von sys.path: Ссылка
Ich hatte gerade ein ähnliches Problem bei der Arbeit mit iPython mit Modulen, die über mehrere Verzeichnisse verteilt sind. In diesem Fall muss sichergestellt werden, dass module.__path__
der Module mit verteiltem __init__.py
alle Verzeichnisse enthält, in denen sich eines der __init__.py
des Moduls befindet, und dass das korrekte Verzeichnis im sys vorhanden ist .path-Liste.
Zum Beispiel habe ich ein Modul namens foo, das ein Modul namens bar enthält, das über mehrere Verzeichnisse verteilt ist:
%Vor%In iPython hatte ich bereits baz und baf importiert und wollte quux importieren.
from foo.bar import quux
Dies hat einen ImportError ergeben, weil carol
nicht in sys.path
war, aber sys.path.append('carol')
hat den ImportError nicht behoben.
Was erforderlich war, informierte das bar
Modul, dass eines seiner __init__.py
in 'carol / foo / bar' gefunden werden konnte.