2012-05-14 10 views
6

W Subversion documentation jest przykładem użycia Subversion z PythonemPython Subversion wrapper library

#!/usr/bin/python 
import svn.fs, svn.core, svn.repos 

def crawl_filesystem_dir(root, directory): 
    """Recursively crawl DIRECTORY under ROOT in the filesystem, and return a list of all the paths at or below DIRECTORY.""" 

    # Get the directory entries for DIRECTORY. 
    entries = svn.fs.svn_fs_dir_entries(root, directory) 

Gdy ten kod pojawia się błąd importowania:

$ python crawl.py 
Traceback (most recent call last): 
    File "crawl.py", line 7, in <module> 
    import svn.fs, svn.core, svn.repos 
ImportError: No module named svn.fs 

Oznacza to jestem brakuje biblioteka svn. Próbowałem zainstalować pakiet, ale menedżer pakietów Pythona nie może go znaleźć.

$ pip install svn 
Downloading/unpacking svn 
    Could not find any downloads that satisfy the requirement svn 
No distributions at all found for svn 

Jak zainstalować tę bibliotekę?

+1

Czy to nie jest trochę dziwne, że narzeka 'svn.core' ale nie o' svn.fs' (ta ostatnia jest pierwsza na liście importu)? – NPE

+1

Złapałeś mnie, skopiowałem i wkleiłem błąd, uruchamiając 'import svn.core' w interaktywnym pytaniu –

Odpowiedz

9

Biblioteka, do której odnosi się niniejsza dokumentacja, to owijarki oparte na SWIG, które są budowane i dostarczane z samą Subversion. Zatem - jeśli pakiet twojego systemu operacyjnego to subversion, poszukaj obok niego pakietu subversion-python. Jeśli budujesz subversion ze źródła, będziesz chciał użyć opcji konfigurowania --with-python dla powiązań, które będą budowane równolegle.

Alternatywą (o zupełnie innym API) jest the 3rd-party wrapper pysvn. Są one lepiej udokumentowane i łatwiejsze w użyciu, ale są również mniej wydajne pod względem wydajności środowiska wykonawczego (nie implementują wszystkich możliwości ponownego użycia połączenia i takich nieudokumentowanych "oficjalnych" wiązań).

+0

Niestety, mój system operacyjny jest teraz w systemie Windows, nie ma menedżera pakietów. Z przyjemnością używam 'pysvn', jeśli możesz połączyć mnie z dokumentacją. –

+0

@MattHickford Zaktualizowano link do pysvn. –

+1

Dzięki znalazłem nieuchwytną dokumentację http://pysvn.tigris.org/docs/pysvn_prog_guide.html http://pysvn.tigris.org/docs/pysvn_prog_ref.html –

2

Musisz zainstalować subversion-python, aby móc importować klasy.

W moim przypadku (Fedora)

sudo yum install subversion-python 

apt-get powinien mieć mniej więcej taki sam