2008-08-30 28 views
5

我試圖使用svnmerge.py來合併一些文件。底下它使用python,當我使用它時,我得到一個錯誤 - 「系統找不到指定的文件」。工作中的同事正在運行相同版本的svnmerge.py,以及python(2.5.2,特別是r252:60911)而沒有問題。我發現了this link,它描述了我的問題。想什麼概述那裏,我證實了Python中可以找到SVN(這是我的路徑中):「系統無法找到指定的文件」當調用Python中的subprocess.Popen

 
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' 

望着svnmerge.py碼,不過,我注意到了Python版本2.4或更高,這是繼一不同的執行路徑。它使用subprocess.Popen()而不是調用 os.popen4()。嘗試再現錯誤:

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

現在,我已經註釋掉了2.4和更高的具體的代碼,但我想找到一個妥善的解決辦法。

如果不是很明顯,我是一個完整的python新手,但谷歌沒有幫助。任何指針?

回答

13

這是一個錯誤,請參閱documentation of subprocess.Popen。 「或者需要是"shell=True」選項,或者第一個參數需要是一個序列['svn', '--version']。現在,Popen正在尋找一個名爲「svn --version」的可執行文件,它找不到。

我不知道爲什麼它可以爲你的同事工作,但是,如果他們運行的是相同的操作系統和Python版本... FWIW它給了我一個mac上的相同的錯誤信息,以及兩種方式之一修復了它。

相關問題