1

私はpysvnを使用するツールに取り組んでいます。このツールの以前の作成者には pysvn1.4 が含まれていたため、pysvn をダウンロードまたはインストールする必要なく、python を備えた任意のマシンで使用できました。

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とsubversionのバージョン1.6.15があるようです。

4

1 に答える 1

3

pysvn は間違いなくビルドするモジュールの 1 つです。これは、私が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コードが変更されている可能性があるため、コンテキスト内の適切な場所を見つけるために使用できます。一方、ライブラリのバグである可能性があるため、最新バージョン (上記のスクリプトを参照) を試すこともできます。

于 2011-07-27T06:54:52.627 に答える