Aufruf von Python 2 Skript aus Python 3

10

Ich habe zwei Skripts, das wichtigste ist in Python 3, und das zweite ist in Python 2 geschrieben (es benutzt auch eine Python 2-Bibliothek).

Es gibt eine Methode im Python 2-Skript, die ich aus dem Python 3-Skript aufrufen möchte, aber ich weiß nicht, wie ich diese Brücke überqueren soll.

    
Gary Ye 09.01.2015, 15:25
quelle

5 Antworten

9

Sie können python2 von bash aus unter Verwendung des Subprozesses (Python-Modul) ausführen, indem Sie Folgendes tun:

Von python 3 :

%Vor%

Wo Ausgabe speichert was Python 2 zurückgegeben

    
mikelsr 14.02.2017 15:14
quelle
4

Der Aufruf verschiedener Python-Versionen kann sehr elegant mit 'execnet' erfolgen. Die folgende Funktion macht den Charme:

%Vor%

Beispiel: A my_module.py in Python 2.7 geschrieben:

%Vor%

Dann ruft die folgende Funktion

auf %Vor%

Ergebnis in

%Vor%

Was passiert ist, ist, dass ein "Gateway" instantiiert wurde und gewartet wurde für eine Argumentliste mit channel.receive() . Sobald es hereinkam, wurde es übersetzt und an my_function weitergegeben. my_function gab die generierte Zeichenkette zurück und channel.send(...) schickte die Zeichenkette zurück. Auf der anderen Seite des Gateways fängt channel.receive() das Ergebnis ab und gibt es an den Aufrufer zurück. Der Aufrufer gibt schließlich die Zeichenfolge aus, die von my_function im Python 3-Modul erzeugt wurde.

    
Frank-Rene Schäfer 07.07.2017 08:00
quelle
0

Ich verwende meinen Python-Code mit Python 3, aber ich brauche ein Tool (ocropus), das mit Python 2.7 geschrieben wurde. Ich habe eine lange Zeit damit verbracht, all diese Optionen mit dem Subprozess auszuprobieren und weiterhin Fehler zu haben, und das Skript wurde nicht vollständig. Über die Befehlszeile läuft es einwandfrei. Also habe ich endlich etwas einfaches versucht, das funktionierte, das ich aber bei meinen Recherchen nicht online gefunden hatte. Ich habe den Befehl okropus in ein Bash-Skript eingefügt:

%Vor%

Ich rufe das Bash-Skript mit Subprozess auf.

%Vor%

Dies gibt dem Ocropus-Skript wirklich seine eigene kleine Welt, die es zu brauchen scheint. Ich poste das in der Hoffnung, dass es jemand anderen irgendwann retten wird.

    
excyberlabber 30.10.2017 10:01
quelle
0

Hinweis: Dies geschah, wenn ich meine Python 2.x s / w in der Liclipse IDE ausführte. Wenn ich es von einem Bash-Skript in der Befehlszeile ausführte, hatte es das Problem nicht. Hier ist ein Problem & amp; Lösung hatte ich beim Mischen von Python 2.x & amp; 3.x Skripte.

Ich führe einen Python 2.6 Prozess & amp; benötigt, um ein Python 3.6-Skript aufzurufen / auszuführen. Die Umgebungsvariable PYTHONPATH wurde so eingestellt, dass sie auf 2.6 Python s / w zeigt, so dass es auf folgende Weise erstickt:

%Vor%

Dies führte dazu, dass das Python-Skript fehlschlug. Anstatt also direkt das 3.6-Programm aufzurufen, habe ich ein Bash-Skript erstellt, das die PYTHONPATH-Umgebungsvariable mit einem Knockout versehen hat.

%Vor%     
Fred Jensen 11.12.2017 15:10
quelle
0

Es funktioniert für mich, wenn ich die Python 2 ausführbare Datei direkt von einer Python 3-Umgebung aus aufrufen kann.

%Vor%     
sparrow 27.03.2018 21:57
quelle

Tags und Links