2008-08-30 20 views
5

Bazı dosyaları birleştirmek için svnmerge.py kullanmaya çalışıyorum. Kaputun altında python kullanıyor ve onu kullandığımda bir hata alıyorum - "Sistem belirtilen dosyayı bulamıyor". İşteki iş arkadaşları svnmerge.py'nin ve python'un (2.5.2, özellikle r252: 60911) aynı versiyonunu bir sorun olmadan çalıştırıyorlar."Sistem belirtilen dosyayı bulamıyor" altprocess.Popen python

Sorunumu açıklayan this link'u buldum. Orada ana hatlarıyla ne çalışılıyor, ben Python (benim yolda var) svn bulabiliriz doğruladı:

 
P:\>python 
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> i,k = os.popen4("svn --version") 
>>> i.close() 
>>> k.readline() 
'svn, version 1.4.2 (r22196)\n' 

olsa svnmerge.py koduna baktığımızda, ben piton sürümleri 2.4 ve üzeri farklı bir yürütme takip ediyordu için fark yolu. os.popen4() öğesini çağırmak yerine, altprocess.Popen() kullanır. Bu hatayı çoğalır çalışılıyor:

 
C:\>python 
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. 
>>> import subprocess 
>>> p = subprocess.Popen("svn --version", stdout=subprocess.PIPE, 
>>> close_fds=False, stderr=subprocess.PIPE) 
Traceback (most recent call last): 
    File "", line 1, in 
    File "C:\Python25\lib\subprocess.py", line 594, in __init__ 
    errread, errwrite) 
    File "C:\Python25\lib\subprocess.py", line 816, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 
>>> 

Şimdilik, 2.4-ve-yüksek özgül kodunu yorumladı, ama ben uygun bir çözüm bulmak istiyoruz.

Açık değilse, tam bir python kullanıcısıyım ama google yardımcı olmadı. Herhangi bir işaretçi?

cevap

13

Bu bir hatadır, bkz documentation of subprocess.Popen. Ya bir "shell=True "seçeneği olması gerekiyor, yoksa ilk argümanın ['svn', '--version'] dizisi olması gerekiyor. Şimdi olduğu gibi, Popen, tam anlamıyla," svn --version "adlı bir yürütülebilir dosya arıyor.

Aynı işletim sistemini ve Python sürümünü çalıştırıyorlarsa, neden iş arkadaşlarınız için işe yarayacağını bilmiyorum ... FWIW bana bir macdaki aynı hata mesajını ve iki yoldan birini verir.

düzeltildi.
İlgili konular