Ich habe zwei angeblich identische Systeme. Auf beiden Systemen laufe ich die gleiche Software, aber auf einer der beiden funktioniert es nicht richtig.imp.load_sources lädt falsch Modul
Ich versuche, Funktion in einer Benutzer-bereitgestellten .py
Datei auszuführen. Ich habe dies auf den folgenden grundlegenden Code reduziert, der den Fehler reproduziert:
import imp
with open("test_scripts/load_offsets.py") as fp:
module = imp.load_source("load_offsets", "test_scripts", fp)
dir(module)
Auf dem ersten System wird die Ausgabe korrekt ist:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'os', 'test_load_offsets']
ich eine Funktion siehe test_load_offsets
genannt, wie erwartet.
Auf dem zweiten System, erhalte ich die folgende Ausgabe:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'test_reset_position']
Bitte beachte, dass ich jetzt eine andere Funktion zu sehen: test_reset_position
. Bei beiden Systemen ist die Datei test_scripts/load_offsets.py
jedoch identisch! Noch wichtiger ist, dass es in dieser Datei keine Funktion test_reset_position
gibt. Es gibt jedoch eine Funktion test_reset_position
in einer anderen Datei, nämlich test_scripts/reset_position.py
. Außerdem gibt es in dem Verzeichnis, in dem ich das Codebeispiel ausgeführt habe, eine Datei test_scriptsc
(dies ist auf beiden Systemen der Fall). Es enthält, glaube ich, Byte-Code, aber auf dem System, wo ich das Problem sehe, kann ich Teile der Datei test_scripts/test_reset_position.py
darin erkennen. Wenn ich test_scriptsc
entferne, funktioniert es wieder gut, bis eine andere Datei geladen wird und dann das Problem erneut beginnt.
Also meine Schlussfolgerung ist, dass auf dem System mit dem Problem, die Datei test_scriptsc
nicht korrekt aktualisiert wird. Ich verstehe jedoch weder warum, noch verstehe ich, warum das Problem nur auf einem der beiden Systeme liegt. Der einzige Unterschied, den ich zwischen den beiden Systemen finden kann, ist, dass das problematische System Python Python 2.7.12 unter Ubuntu Linux 16.04.1 ausführt, während das System ohne das Problem Python 2.7.11+ unter Ubuntu 16.04 ausführt.
Kann mir jemand helfen, herauszufinden, was hier vor sich geht? Ich habe keine Ahnung, wonach ich suchen soll ...
Was bekommen Sie, wenn Sie den Wert von 'Modul .__ Datei__' auf den beiden Systemen betrachten? – BrenBarn
Für beide Systeme 'Modul .__ Datei__' ist' test_scriptsc'. – Ludo