Il n'y a pas de fonction spawnl en python 2.6?
-
21-09-2019 - |
Question
Je viens de remarquer que mes anciens codes écrits en Python 2.5 ne fonctionne pas maintenant. Je suis en python 2.6 btw.
>>> os.spawnl(os.P_NOWAIT,"setup.exe")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python26\lib\os.py", line 612, in spawnl
return spawnv(mode, file, args)
OSError: [Errno 22] Invalid argument
>>>
Un indice? ou avez-vous un échantillon de travail de os.spawn * avec option NOWAIT.
Mise à jour:
Même je mets le chemin complet dans os.spawnl (), Son erreur encore.
La solution
Thrope a raison subprocess
étant préféré. Mais le frai * des choses est toujours là dans 2.6 . En fait, vous pouvez voir que dans votre message d'erreur. Votre première arg semble être valide. Je vérifie la deuxième arg, qui est le chemin.
Autres conseils
Je l'ai travail en ajoutant le paramètre DUMMY enfin, un peu étrange si
Ce ne fonctionne pas
os.spawnl(os.P_NOWAIT,"Setup.exe")
Ceci est également ne fonctionne pas
os.spawnl(os.P_NOWAIT,"Setup.exe","")
Mais cela fonctionne
os.spawnl(os.P_NOWAIT,"Setup.exe","DUMMY")
Merci à tous de toute façon.
Une recherche Google évoque cette page sur le même problème se produit quand il y a un espace dans le chemin d'installation de python. Je ne pouvais pas le reproduire ici, mais peut-être que c'est le problème?
Dans tous les cas, selon la documentation MS cette valeur d'erreur (EINVAL) ne doit être renvoyée si l'argument de mode est invalide, ce qui est le cas ici.
os.spawnl()
nécessite chemin complet exécutable, alors que os.spawnlp()
utilise la variable d'environnement PATH pour le trouver.
Mise à jour : En outre, il est une erreur commune à la barre oblique inverse unescaped dans le chemin littéral (essayez d'imprimer pour voir si elle est interprétée à droite).