Как включить и связать pysvn с моим скриптом Python?

Я работаю над инструментом, который использует 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)

Это говорит мне о том, что я не правильно импортировал модуль, хотя могу ошибаться.

Редактировать: кажется, что у меня есть версия 1.6.2 pysvn и версия 1.6.15 subversion, которые, по-видимому, несовместимы.


person chindes    schedule 26.07.2011    source источник
comment
По какой причине вы не можете использовать что-то вроде python setup.py install?   -  person Patrick Perini    schedule 27.07.2011


Ответы (1)


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/_pysvndiff7.so $TARG/lib/python2.7/site-packages/pysvn
cd ~

Если у вас все еще есть старый модуль, почему бы не попробовать запустить его еще раз, но добавить несколько операторов отладки в то же место в файле, который вызвал исключение. Вы можете использовать diff, чтобы найти нужное место в контексте, так как код мог измениться. С другой стороны, вы можете просто попробовать последнюю версию (см. сценарий выше), так как это может быть ошибка библиотеки.

person Michael Dillon    schedule 27.07.2011
comment
Спасибо, однако причина, по которой я использовал 1.6.2, заключается в том, что я смог установить ее через yum. Я получаю эту ошибку при установке 1.7.5. py2-svn1.6.log test-01.unix.new.log Info: Comparing test-01.unix.known_good-py2-svn1.6.log Info: Against test-01.unix.new.log Error: Test failed - test-01.unix.new.log Error: -------------------------------------------------------------------------------- Error: Result(8) insert <workdir>/Tests/testroot-01 Error: ---------------------------------------------------------------------------- make: *** [test-01.unix.new.log.clean] Error 1 - person chindes; 27.07.2011
comment
@chindes: я думаю, что эта ошибка связана с тем, что ваша версия pysvn не синхронизирована с Subversion. Я использовал этот PYSVN pysvn.barrys-emacs.org/source_kits/ pysvn-1.7.5.tar.gz - person Michael Dillon; 28.07.2011
comment
Я думаю, вы правы в том, что мой pysvn не синхронизирован с моей версией SVN. У меня есть версия 1.6.2 pysvn и 1.6.15 subversion, которые, по-видимому, несовместимы. Однако, когда я попробовал вашу версию pysvn, я получил показанную вам ошибку. - person chindes; 28.07.2011