In der folgenden Struktur:voran PYTHONPATHs nicht in sys.path für Python eingebettet
- foobar
- __init__.py
- pyfoo
- __init__.py
- foo.pyd
- src
- __init__.py
- test
- __init__.py
- bar.py
Ich versuche foo.pyd
von bar.py
zu laden. Dazu habe ich einen Eintrag in PYTHONPATH
mit \\?\C:\<path_to_foobar>\foobar\pyfoo
eingefügt.
In bar.py
Ich versuche dann zu
import foo
, die nie foo
findet.
Wenn ich nun sys.path
anschaue, fehlen Einträge von PYTHONPATH
. Auch wenn ich suche, unter welchen Pfaden foo.pyd
gesucht wird, werden nur Pfade von sys.path
berücksichtigt.
Wie kommt es, dass sys.path
nicht alle Pfade von PYTHONPATH
enthält?
EDIT:
die Pfade testen ich direkt vor dem Import eingefügt Protokolle:
print("SP %s" % sys.path)
print("PP %s" % os.environ["PYTHONPATH"])
Was mich so etwas wie gibt:
SP ['\\\\?\\B:\\foobar\\pyfoo\\src\\test', 'C:\\python3\\win_x86_64\\python35.zip', 'C:\\python3\\win_x86_64\\DLLs', 'C:\\python3\\win_x86_64\\lib', 'C:\\python3\\win_x86_64']
PP \\?\B:\;\\?\B:\foobar\pyfoo;\\?\B:\foobar;\\?\B:\foobar\pyfoo
wie haben Sie Ihren PYTHONPATH Eintrag einfügen? Sind Sie sicher, dass die Variable dort definiert ist, wo Sie Ihr Skript ausführen? Sie können PYTHONPATH vor dem Starten des Skripts wiederholen. Offensichtlich fehlt hier ein [mcve]. –
Siehe Bearbeiten, ich spreche nicht nur vorher sondern im Script. – abergmeier
Ich verstehe, dass Sie Ihren Servernamen durch '?' Ersetzt haben. Wenn nicht, gibt es ein erstes Problem: Dies kann kein gültiger Pfad sein. Und der andere Fehler ist das Laufwerk ':' welches im Fall von UNC Pfaden mit Laufwerken '$' sein sollte. Ihre UNC-Pfade scheinen nicht gültig zu sein. –