Python: import symbolischer link auf einen Ordner
Ich habe einen Ordner A enthält einige Python-Dateien und __init__.py.
Wenn ich kopieren Sie den gesamten Ordner in einen anderen Ordner B und erstellen Sie dort eine Datei mit "importieren", es funktioniert. Aber jetzt Entferne ich die Ordner und verschieben Sie in ein symbolischer link auf den ursprünglichen Ordner. Nun es funktioniert nicht, zu sagen "Kein Modul namens "foo".
Hat jemand wissen, wie Sie mit der symlink für den Import?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python nicht überprüfen, ob Ihre Datei ist ein symlink ist oder nicht! Dein problem liegt wahrscheinlich in der Umbenennung der Module oder nicht mit Ihnen in Ihre Suche-Pfad!
Wenn ModuleA wird ModuleB und Sie versuchen, importieren ModuleA er Sie nicht finden kann, weil es ihn nicht gibt.
Wenn Sie verschoben ModuleA in ein anderes Verzeichnis und erzeugen Sie einen symbolischen Link mit einem anderen Namen, stellt ein neues Verzeichnis an, in diesem neuen Verzeichnis muss mit dem gemeinsamen übergeordneten Verzeichnis des Skripts und das Modul, oder der symlink Verzeichnis muss im Suchpfad.
BTW es ist nicht klar, ob du meinst, Modul oder Paket. Das Verzeichnis mit den
__init__.py
Datei wird ein Paket aller Dateien mit der Erweiterung.py
(= Module), die Ihren Wohnsitz darin.Beispiel
Verschieben und symlink
Wenn SYMA hat den gleichen Namen wie DIRA und das Skript ist in das Verzeichnis SYMA dann sollte es einfach funktionieren. Wenn nicht, dann müssen Sie zu:
Wenn Sie möchten, importieren Sie ein Modul aus Ihrem Paket SYMA müssen Sie:
Einem einfachen:
wird import packagename, aber nicht die Module in das Paket in Ihrem Namensraum!
Diese Art von Verhalten kann auftreten, wenn Ihre symbolische links sind nicht richtig eingestellt. Zum Beispiel, wenn Sie erstellt wurden, mit relativen Dateipfaden. In diesem Fall werden die symlinks erstellt werden, ohne Fehler würde aber nicht überall sinnvoll.
Ob dies die Ursache des Fehlers, verwenden Sie den vollständigen Pfad zu erstellen, die links und prüfen Sie, ob Sie korrekt ist, indem Sie
ls
ing den link und die Beobachtung der erwarteten directory-Inhalt.