Mein Arbeitgeber hat ein eigenes Modul 1 , das wir für den internen Einheiten- / Systemtest verwenden; der Autor dieses Moduls arbeitet hier jedoch nicht mehr und ich wurde gebeten, einige Geräte damit zu testen.
Das Problem ist, dass pyfoo
eine alte Version von twisted
(v8.2.0) benötigt und twisted
in 33 verschiedene Dateien importiert. Ich habe versucht, pyfoo
Einheitentests unter v11.0.0 laufen zu lassen und ich sehe nicht einmal TCP-SYN-Pakete 2 . Leider habe ich bereits twisted v11.0.0 auf meinem lab linux server installiert und ich habe meinen eigenen Code, der davon abhängt.
Ich habe mein Gehirn für einen Weg in diese Richtung gequält, aber ich kann nur die folgenden Optionen vorschlagen:
Option A . Installiere eine neue Version von Python, installiere virtualenv
und installiere dann eine alte Version von twisted
unter dem virtualenv
. Führen Sie die Tests, die pyfoo
erfordern, nur unter dieser neuen Version von python aus.
Option B . Bearbeiten Sie alle 33 Dateien mit den folgenden: DIR = '../'; sys.path.insert(0, DIR)
und installieren Sie die alte Version von Python im entsprechenden Verzeichnis unterhalb der Quelle.
Option C . Versuch, pyfoo
zu reparieren, um v11.0.0 3
Gibt es irgendwelche Optionen, die mir fehlen? Gibt es einen eleganteren Weg, um dieses Problem zu lösen, neben Option A, oben?
END-NOTES:
pyfoo
wegen des Arguments pyfoo
ist nicht trivial, und ich habe eine kurze Frist für diese Arbeit. Eine bessere Version von Option B. wäre das Ersetzen von
%Vor%von
%Vor%wird dafür sorgen, dass die korrekte Version von twisted importiert wird, solange sie installiert ist, und löst sonst eine Ausnahme aus. Dies ist eine tragbare Lösung.
Dies wird jedoch nicht funktionieren (noch würde irgendeine andere Variante von Option B), falls verdreht, importiert werden, bevor% code_% aufgerufen wird; pkg_resources.require
ist bereits in twisted
OP Bearbeiten : Untergeordnete Syntaxkorrektur, nach sys.modules
docs
Ich kann Ihnen nicht sagen, was in Ihrer Situation am besten ist, aber Sie könnten vielleicht Folgendes in Erwägung ziehen:
Option D: Ausführen in einer virtuellen Maschine (z. B. mit Windows 7)
Option E: alte Version von python / twisted auf einem anderen Rechner installieren
Wenn die Lösung von SingleNegationElimination nicht funktioniert, beachten Sie, dass Sie nicht alle 33 Instanzen des Imports ersetzen müssen. Sie müssen nur sys.path
an den Einstiegspunkten ändern; z.B. Sie können nur die __init__.py
-Dateien Ihres Moduls als Ziel verwenden.
Dort würden Sie z.B.
%Vor%Tags und Links python python-import linux twisted