pip n'est pas en mesure de trouver ce module, ainsi que moi sur le site pypi. Pourriez-vous s'il vous plaît me dire le secret, comment l'installer?
J'ai besoin du module pour générer un nouveau processus Shell via subprocess.call. J'ai vu beaucoup d'exemples où les gens utilisent import subprocess
, mais personne ne montre comment il a été installé.
Erreur, que j'ai (juste au cas où j'aurais perdu la tête et ne comprend pas ce qui se passe):
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\Alexander\Desktop\tests-runner>python run.py
Traceback (most recent call last):
File "run.py", line 165, in <module>
main()
File "run.py", line 27, in main
subprocess.call('py.test')
File "C:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Il n'est pas nécessaire d'installer ce module dans Python 2.7. Il s'agit d'un module standard intégré.
Le documentation montre qu'il a été ajouté à la bibliothèque pour Python version 2.4. Il est avec nous depuis longtemps maintenant.
L'erreur que vous montrez dans la mise à jour de votre question n'est rien de plus prosaïque qu'une erreur de fichier introuvable. Le fichier exécutable sur lequel vous essayez d'appeler Popen
est probablement introuvable.
Cette trace indique que subprocess
est installé et a été importé. Le problème est simplement que l'appel à subprocess.call('py.test')
échoue.
Pour référence future, voici le type de traceback que vous rencontrez lorsque vous tentez d'importer un module qui n'a pas été installé:
>>> import foo Traceback (dernier appel le plus récent): Fichier "", ligne 1, dans ImportError: Aucun module nommé foo
Le texte d'erreur est trompeur. La plupart des commandes de sous-processus s'attendent à ce que le shellcmd soit soumis comme une liste de chaînes.
Dans ces cas, je recommande fortement l'utilisation du module shlex:
import shlex
Shell_cmd = "py.test" # or should it be "test.py" ?
subprocess_cmd = shlex.split(Shell_cmd)
subprocess.call(subprocess_cmd)
ou dans ce cas simple juste:
subprocess.call(["py.test"])