Appel du script Python 2 à partir de Python 3
J'ai deux scripts, le principal est en Python 3, et le second est écrit en Python 2 (il utilise également un Python 2 de la bibliothèque).
Il y a une méthode dans le script Python 2, je tiens à appeler à partir du script Python 3, mais je ne sais pas comment traverser ce pont.
source d'informationauteur Gary Ye | 2015-01-09
Vous devez vous connecter pour publier un commentaire.
Vous pourriez exécuter python2 de bash à l'aide de sous-processus (module python) procédant de la manière suivante:
De python 3:
Où la sortie des magasins de ce que python 2 retournée
Appelant les différentes versions de python les uns des autres peut être fait avec beaucoup d'élégance à l'aide de 'execnet'. La fonction suivante effectue le charme:
Exemple: Un
my_module.py
écrit en Python 2.7:Ensuite, les appels de fonction
résultat dans
Ce qui s'est passé est qu'une "passerelle" a été instancié en attente
pour une liste d'arguments avec
channel.receive()
. Une fois qu'il est entré, il a été traduit et transmis àmy_function
.my_function
retourné la chaîne, il a généré etchannel.send(...)
envoyé la chaîne de retour. De l'autre côté de la passerellechannel.receive()
captures de suite et retourne à l'appelant. L'appelant enfin affiche la chaîne de caractères telle que produite parmy_function
dans le module python 3.Je suis en cours d'exécution de mon code python avec python 3, mais j'ai besoin d'un outil (ocropus) qui est écrit en python 2.7. J'ai passé beaucoup de temps à essayer toutes ces options avec des sous-processus, et d'avoir gardé des erreurs, et le script ne serait pas complète. À partir de la ligne de commande, il fonctionne très bien. J'ai donc essayé finalement quelque chose de simple qui a fonctionné, mais que je n'avais pas trouvé dans mes recherches en ligne. J'ai mis le ocropus de commande à l'intérieur d'un script bash:
J'appelle le script bash avec des sous-processus.
Ça donne vraiment l'ocropus script de son propre petit monde, qui semble en avoir besoin. Je vous poste ça dans l'espoir qu'il permettra de sauver quelqu'un d'autre peu de temps.
Remarque: Ce qui se passait lors de l'exécution de mon python 2.x s/w dans le liclipse IDE.
Quand je l'ai couru à partir d'un script bash sur la ligne de commande il n'a pas eu le problème.
Voici un problème que & solution que j'ai eu lors du mélange de python 2.x & 3.x scripts.
Je suis en cours d'exécution d'un python 2.6 processus & besoin d'appeler/exécuter un python 3.6 script.
La variable d'environnement PYTHONPATH a été mis au point 2.6 de python s/w, donc c'était l'étouffement à la suivante:
De ce fait, les 3.6 script python à l'échec.
Donc, au lieu d'appeler la 3.6 programme directement, j'ai créé un script bash qui nuked la variable d'environnement PYTHONPATH.
Ça marche pour moi, si je l'appelle le python 2 exécutable directement à partir d'un environnement python 3.