2014-10-01 26 views
8

pip bu modülü yanı sıra pypi web sitesinde bulamıyor. Lütfen bana sırrını söyler misiniz, nasıl kurulur?Python için alt işlem modülü nasıl kurulur?

Subprocess.call aracılığıyla yeni kabuk işlemi oluşturmak için modüle ihtiyacım var. İnsanların import subprocess kullandığı pek çok örnek gördüm, ancak nasıl yüklendiğini kimse göstermiyor.

Hata, ben var ki (her ihtimale karşı aklımı kaybettim ve ne olup bittiğini anlamaz):

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 
+3

, bunu yüklemeniz gerekmez:

import shlex shell_cmd = "py.test" # or should it be "test.py" ? subprocess_cmd = shlex.split(shell_cmd) subprocess.call(subprocess_cmd) 

ya da sadece bu basit durumda

. python versiyonun nedir? –

+1

'Alt işlem 'modülü standart kütüphanenin bir parçasıdır, gerek duymaz (gerçekte). Aldığınız hata, bir alt işlem olarak çalıştırılması gereken * yürütülebilir * öğesinin, "alt işlem" modülünün kendisinde bulunamadığını belirtir. Çalışma dizini, '$ PATH' ya da '.exe' olmayan yürütülebilir dosya ile ilgili bir sorun olabilir. –

+0

Hangi dosya türü "py.test" nedir? Windows, '.test' uzantılı bir dosyayı nasıl çalıştırması gerektiğini bilmez, bu nedenle en azından yürütmek için bir yorumlayıcı belirtmeniz gerekir. Bu sorunun bir örneği için [bu soru] bölümüne bakın (http://stackoverflow.com/questions/4965175/make-subprocess-find-git-executable-on-windows/10555130). –

cevap

7

Python 2.7 Bu modül yüklemeye gerek yoktur.

Standart bir modüldür. documentation, Python sürüm 2.4 için kütüphaneye eklendiğini gösterir. Şimdi uzun zamandır bizimle beraber.

Sorunun güncelleştirmesinde gösterdiğiniz hata, bir dosyada bulunan hatadan daha fazla bir şey değildir. Muhtemelen Popen numaralı telefonu aramaya çalıştığınız yürütülebilir dosya bulunamıyor.

Bu geri izleme subprocess'un yüklü olduğunu ve alındığını gösterir. Sorun şu ki, subprocess.call('py.test') numaralı çağrı başarısız oluyor.

 
>>> import foo 
Traceback (most recent call last): 
    File "", line 1, in 
ImportError: No module named foo 
+0

Sadece yeni bir soru güncelledim ve hata metni ekledim .. belki doğru anlamadım? – avasin

+0

Evet, tamamen haklısınız. Zor bir gün ... 8 dakika içinde cevap kabul eder. – avasin

2

hata metin yanıltıcı: İleride


, bu yüklenmemiş bir modül içe aktarmaya çalışırken karşılaşabileceğiniz traceback türüdür. Çoğu alt işlem komutları, shellcmd dizelerinin bir listesi olarak gönderilmesini bekler.

Bu durumlarda ben şiddetle shlex modülünün kullanımını tavsiye: yerleşik olduğunu

subprocess.call(["py.test"]) 
İlgili konular