Python-sys.path-Änderung funktioniert nicht

7

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

%Vor%

es funktioniert nicht. Es berücksichtigt die Pfade nicht.

Wenn ich es tue

%Vor%

es funktioniert.

Danke

    
celavek 19.06.2009, 13:14
quelle

4 Antworten

17

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.

    
Eli Courtwright 19.06.2009 13:26
quelle
4

Beispiel zum Aktualisieren von sys.path aus hier

%Vor%

Das hat für mich funktioniert.

    
bentford 26.08.2009 09:15
quelle
2

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: Ссылка

    
Jon 19.06.2009 13:23
quelle
1

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.

%Vor%     
pcurry 01.03.2013 17:46
quelle

Tags und Links