如何在我的python脚本中包含和链接pysvn?

时间:2011-07-26 22:29:36

标签: python svn pysvn

我正在使用一个使用pysvn的工具。该工具的前一位作者用它包含了pysvn1.4,因此它可以在任何有python的机器上使用,而无需下载或安装pysvn。

我想更新该工具以使用pysvn 1.6。

我到目前为止所做的是在我的机器上安装了pysvn1.6,并将pysvn文件夹从我的/ usr / lib / python / site-package / pysvn目录移动到我的源文件目录中,看起来像这就是前一位作者的表现。

当前的文件系统结构如下:

assorted.py files
assorted.pyc files
pysvn folder that includes old version of pysvn
    __init__.py
    __init__.pyc
    __pysvn.so

但是,当我运行程序时,我收到此错误:

Traceback (most recent call last):
  File "slocmine.py", line 195, in ?
    sys.exit(main(sys.argv[0:]))
  File "slocmine.py", line 113, in main
    logjsonstr = pyslocd_svn_log.doit(svn, url)
  File "/users/users1/chindes/newsloc/svn/lib/python2.4/pyslocd_svn_log.py", line 114, in doit
    revision=pysvn_rev_head, depth=pysvn.depth.empty)
AttributeError: 'module' object has no attribute 'empty'

源自此(以前有效)代码:

repoinfo = svn.info2(repoPathUrl,
    revision=pysvn_rev_head, depth=pysvn.depth.empty)

这告诉我,我没有正确导入模块,虽然我可能错了。

编辑:似乎我的pysvn版本1.6.2和版本1.6.15的subversion显然不兼容。

1 个答案:

答案 0 :(得分:3)

pysvn绝对是构建的陌生模块之一。这就是我成功构建和使用pysvn的方法。环境变量TARG设置为Python安装目录。

cd ~
wget http://pysvn.barrys-emacs.org/source_kits/pysvn-1.7.5.tar.gz
tar zxvf pysvn-1.7.5.tar.gz
cd pysvn-1.7.5/Source
python setup.py backport
python setup.py configure --apr-inc-dir=/usr/include/apr-1
make
cd ../Tests
make
cd ../Sources
mkdir -p $TARG/lib/python2.7/site-packages/pysvn
cp pysvn/__init__.py $TARG/lib/python2.7/site-packages/pysvn
cp pysvn/_pysvn_2_7.so $TARG/lib/python2.7/site-packages/pysvn
cd ~

如果您仍然可以使用旧模块,为什么不尝试再次运行它,而是在文件中的相同位置添加一些调试语句,从而引发异常。您可以使用diff在上下文中找到正确的位置,因为代码可能已更改。另一方面,您可以尝试使用最新版本(请参阅上面的脚本),因为它可能是库错误。