Windows Server 2008 x64上的Python SVN绑定
我的目标是使用位于subversion\tools中的Python脚本,这里具体是validate-extensions.py。我现在在运行VisualSVN Server 2.15,它是基于Subversion 1.6.15构建的,机器上安装的是32位的Python 2.7.1。
当我设置钩子(hook)的时候,出现了一个错误,提示找不到svn模块。我安装了我能找到的最新的libsvn绑定文件(可以从这个链接下载),但是我还是无法加载svn模块。如果我在命令行运行from svn import repos,我会得到以下错误:
文件 "C:\Python27\lib\site-packages\libsvn\core.py", 第21行,在swig_import_helper中 _mod = imp.load_module('_core', fp, pathname, description) 导入错误: DLL加载失败:指定的过程无法找到。
我是不是漏掉了什么?我也尝试过64位的Python27版本,但是似乎没有预编译的svn绑定可用,我更不想自己去搭建这些东西。
提前感谢你的帮助。
1 个回答
我在Subversion的邮件列表上找到了这个问题的答案。问题出在Trac提供的Python 2.7 SVN绑定,它们使用的是一个旧版本的Apache动态链接库(dll),叫做libapr-1.dll,并且它引用了一个名为'_apr_time_ansi_put@8'的函数。而在后来的Apache版本中,包括VisualSVN 2.1.5,libapr-1.dll是更新的,这个函数的名字改成了'_apr_time_ansi_put@12'。
为了解决这个问题,我下载了旧版的Apache绑定,链接是http://subversion.tigris.org/files/documents/15/47914/svn-win32-1.6.6.zip,然后把VisualSVN\bin\文件夹里的libapr-1.dll重命名为libapr-1.dll.bak,接着把下载的旧版libapr-1.dll复制到VisualSVN\bin文件夹里,并重启了服务。这样就没有问题了,python中的'from svn import core'可以正常工作,validate-extensions.py这个钩子也运行得很好。