2015-11-27 1 views
1

J'utilise plusieurs applications qui utilisent les différentes versions de Python:Comment exécuter un script Python dans un interpréteur Python plus récent?

Nuke - 2,7

3Dequalizer - 2.6

linux - 2.6.6

Je reçois divers problèmes en essayant d'obtenir Je me demandais s'il était possible de changer d'interpréteur Python pendant un script.

E.g. Commencez à 2.6, puis exécutez un script Python 2.7 à partir d'un script 2.6

EDIT:

nuke_install = "/path/to/nuke" 

cmd = nukeLauncher + " -t" 
os.system(cmd) 

Le drapeau -t permet nuke être exécuté sans interface graphique. Ce code fonctionne lorsqu'il est exécuté dans un interpréteur Python, mais quand je lance via un script Python en 3dequalizer il me donne:

ImportError: No module named site 

Pour ajouter un autre niveau de confusion, je peux importer le site à l'intérieur 3dequalizer. Le sys.path pour 3dequalizer contient les mêmes chemins que lorsqu'il est exécuté directement depuis l'interpréteur, avec quelques ajouts pour la librairie python fournie avec 3de.

De plus, PYTHONPATH est vide dans 3dequalizer. Est-ce important si sys.path pointe vers les bons chemins?

+0

Vous devriez essayer d'écrire des codes qui sont compatibles avec toutes les versions. –

+1

Etes-vous sûr qu'il y a un problème spécifique à la version de Python qui cause vos problèmes de communication, ou supposez-vous que les différentes versions sont votre problème? – SiHa

+0

Je présume ici. J'ai fait beaucoup de tests et je n'arrive pas à comprendre exactement quel est le problème. Mais quand je cours directement à partir de chaque interprète cela fonctionne bien. Je veux principalement pouvoir utiliser 2.7 pour le sous-processus. Mais quand j'utilise os.system, je reçois ImportError en disant Aucun module nommé site. De certaines recherches autour de ces points au chemin python n'étant pas défini correctement. Ce qui m'a fait me demander s'il s'agissait de voir les différentes versions s'affronter. – Elliot

Répondre

0

Je ne suis pas sûr que ce soit vraiment le chemin à parcourir; mais si vous voulez vraiment le faire, vous pouvez utiliser la commande os.system avec somthing comme:

os.system("python2.7 myscript.py") 

qui exécutera le programme python2.7 (aussi longtemps qu'il est dans votre chemin exécutable) avec le nom du script comme argument (avant de retourner à l'instruction en cours) dans votre script initial.

Mais honnêtement, je pense que vous devriez le faire d'une autre manière. Cordialement.

+0

Merci pour la réponse, je me rends compte que c'est assez salissant. Juste en utilisant plus pour le débogage actuellement. Ce qui ne semble pas fonctionner, alors je pense à la planche à dessin! – Elliot