svn.remote.RemoteClient.info:FileNotFoundError:[WinError 2]系统找不到指定的文件

时间:2017-12-07 17:21:22

标签: python svn

我正在尝试连接SVN远程客户端,并在Windows中使用以下python代码获取最新提交的修订版本:

r = svn.remote.RemoteClient(svnPath)
revNum = str(r.info().get("commit#revision"))

我收到以下错误:

  

in \ n revNum = str(r.info()。get(“commit#revision”))\ n','   文件“C:\ Program   文件\ Python36 \ LIB \站点包\ SVN-0.3.45-py3.6.egg \ SVN \ common.py”   第75行,在info \ n do_combine = True)\ n','文件'C:\ Program   文件\ Python36 \ LIB \站点包\ SVN-0.3.45-py3.6.egg \ SVN \ common.py”   第54行,在run_command \ n中返回self.external_command(cmd,   environment = self。 env,** kwargs)\ n','File“C:\ Program   文件\ Python36 \ LIB \站点包\ SVN-0.3.45-py3.6.egg \ SVN \ common_base.py”   第25行,在external_command \ n env = env)\ n','文件'C:\ Program   Files \ Python36 \ lib \ subprocess.py“,第709行,在__init \ n
中   restore_signals,start_new_session)\ n','文件'C:\ Program   文件\ Python36 \ lib \ subprocess.py“,第997行,在_execute_child \ n中   startupinfo)\ n']:[WinError 2]系统   找不到指定的文件

我尝试打印“svnpath”和“r”以确保其正确无误。我按预期获得了“remote_path”的正确远程服务器路径(简称“svnpath”)和“< SVN(REMOTE) remote_path>”的r

远程SVN需要凭证(UID和PWD)才能访问。但是,我使用此脚本运行的计算机已经具有正确凭据的SVN设置。 我是否还需要在python脚本中指定显式凭证才能访问?如果是这样呢?或者我是否需要任何额外的SVN包?

请帮忙......

2 个答案:

答案 0 :(得分:0)

到那时您可能已经解决了问题,但查看代码可能会有所帮助。

RemoteClient继承自CommonClient,其开头是这样的:

class CommonClient(svn.common_base.CommonBase):
    def __init__(self, url_or_path, type_, username=None, password=None, 
                 svn_filepath='svn', trust_cert=None, env={}, *args, **kwargs):
        super(CommonClient, self).__init__(*args, **kwargs)
   ...

因此,以下方法应该起作用:

import svn.remote

url = "http://server.com:8080/svn/SuperRepo/branches/tool-r20"

client = svn.remote.RemoteClient(url, username="toto", password="SuperPassword")
print(client.info())

答案 1 :(得分:0)

我遇到了相同的错误,并通过安装SVN命令行并将其路径添加到PATH环境变量中进行了修复。

如果您使用Windows,则可以在安装Tortoise SVN时安装命令行可执行文件,但是默认情况下未选中相应的选项(请参见ccpizza's answer)。