Question

Je suis en train d'exécuter un script python d'un programme Python en le bottant hors de sous-processus (La raison en est que le programme principal doit avoir quitté lors de l'exécution de script, avec une combinaison de wx.CallAfter et fermer). Toutefois, lorsque le script est exécuté, je reçois une erreur sur la ligne 1 avec ImportError: No module named os qui me fait penser qu'il ya quelque chose à voir avec le PythonPath, mais je peux exécuter le script très bien à partir d'un terminal.

Pourquoi ne peut pas le script voir tous les modules de base lorsqu'il est exécuté de cette façon?

Edit: La ligne en question est:

wx.CallAfter(subprocess.Popen,'python %s "%s" %s %s'%(os.path.join(BASE_DIR,"updatecopy.py"),BASE_DIR,pos[0],pos[1]),shell=True)

BASE_DIR est juste le répertoire que la vie de script dans.

Était-ce utile?

La solution

subprocess est là parce que os.exec * a été désapprouvée donc je ne suggère d'utiliser que la place de Popen comme quelqu'un a suggéré.

Je l'ai vu cette culture d'émission dans lors de l'exécution d'un processus gelé. Si tel est le cas, alors vous héritez très probablement un environnement étrange pour le nouveau processus de python.

La plupart des scripts congelés vont essayer d'exécuter à partir d'un fichier zip, auquel cas il est pas étonnant que Python ne peut pas trouver quoi que ce soit, il est tout enfermé dans un fichier zip:)

Si tel est le cas essayez en cours d'exécution en utilisant l'exécutable python que vous utilisez pour exécuter le script congelé. Il devrait être en mesure de faire face à l'environnement particulier.

Autres conseils

Peut-être que vous pouvez utiliser os.execv au lieu de Popen.

De os / python docs :

Ces fonctions exécutent tout un nouveau programme, remplacer le processus actuel ; ils ne reviennent pas. Sur Unix, le nouvel exécutable est chargé dans le processus en cours, et aura le même identifiant de processus que l'appelant. Les erreurs seront signalées comme des exceptions OSError.

( accent le mien)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top