56 votes

Erreur Popen : [Errno 2] Aucun fichier ou répertoire de ce type

J'ai des commandes personnalisées.

 # works 
subprocess.Popen(['python'], stdout=subprocess.PIPE)

Mais si j'ai mes propres commandes système comme deactivate , j'obtiens cette erreur

 Traceback (most recent call last):
  File "runner2.py", line 21, in <module>
    main() 
  File "runner2.py", line 18, in main
    subprocess.Popen(['deactivate',], stdout=subprocess.PIPE)
  File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
    errread, errwrite)
  File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Encore moins, je dois l'exécuter sous mon sandbox virtualenv.

124voto

Anthony Kong Points 3779

Essayez d'ajouter un paramètre supplémentaire shell=True à l'appel Popen

5voto

Senthil Kumaran Points 14934

Vous devez donner le chemin complet de votre programme deactivate , puis le module de sous-processus devrait pouvoir le trouver.

0voto

affenlehrer Points 431

Je crée des sous-processus comme ça :

 SHUTDOWN_CMD = os.path.sep.join(["c:", "windows", "system32", "shutdown.exe"])

def abortShutdown():
    os.spawnv(os.P_NOWAIT, SHUTDOWN_CMD,
        [SHUTDOWN_CMD, '/A'])
    time.sleep(3)

Je n'utilise pas de sous-processus car Python 2.5 ne le prend pas en charge. J'ai dû utiliser le chemin FULL pour que cela fonctionne et je suppose que vous devez également utiliser le chemin complet de vos commandes personnalisées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X