2010-03-02 6 views
48

Próbuję użyć rozszerzenia Mercurial hg-git w systemie Windows (Windows 7 64-bit, aby być specyficznym). Mam zainstalowane Mercurial i Git. Mam zainstalowany Python 2.5 (32-bitowy).Jak poprawnie zainstalować dulwich, aby uruchomić hg-git w systemie Windows?

Postępowałem zgodnie z instrukcjami na http://hg-git.github.com/, aby zainstalować rozszerzenie. Początkowy easy_install nie powiodło się, ponieważ nie był w stanie skompilować Dulwich bez Visual Studio 2003.

zainstalowałem Dulwich ręcznie przez:

  • git clone git: //git.samba.org/jelmer/dulwich.git
  • cd Dulwich
  • c: \ Python25 \ python setup.py --pure zainstalować

teraz gdy uruchamiam easy_install HG-git, powiedzie się (ponieważ zależność Dulwich jest spełniony).

W moim C: \ Users \ nazwa_użytkownika \ Mercurial.ini, mam:

[extensions] 
hgext.bookmarks = 
hggit = 

Po wpisaniu 'hg' w wierszu polecenia, widzę: „*** udało się zaimportować rozszerzenia hggit: Brak modułu o nazwie hggit "

Przeglądając mój folder c: \ Python25, jedyne odwołanie do hggit, które widzę, to Lib\site-packages\hg_git-0.2.1-py2.5.egg. Czy to ma być gdzieś wydobyte, czy powinno działać tak jak jest?

Ponieważ to się nie udało, spróbowałem instrukcji "bardziej zaangażowanych" ze strony hg-git, która sugerowała klonowanie git: //github.com/schacon/hg-git.git i odnoszenie się do ścieżki w mojej konfiguracji Mercurial. I sklonowany repo i zmienił mój plik rozszerzenia wyglądać:

[extensions] 
hgext.bookmarks = 
hggit = c:\code\hg-git\hggit 

Teraz gdy uruchamiam Hg, widzę: *** udało się zaimportować przedłużacza hggit z katalogu c: \ code \ hggit \ hggit: Brak modułu o nazwie dulwich.errors.

Ok, tak, że mówi mi, że to jest znalezienie hggit teraz, bo widzę w hggit \ hggit \ git_handler.py że nazywa to

from dulwich.errors import HangupException 

To sprawia, że ​​myślę Dulwich nie jest prawidłowo zainstalowany albo nie na ścieżce.

Aktualizacja:

z linii poleceń Python:

import dulwich 

plony Import Error: No module named dulwich

Jednak w C: \ Python25 \ Lib \ site-packages, Mam dulwich- Folder 0.5.0-py2.5.egg, który wydaje się być wypełniony. Zostało to stworzone przez kroki wspomniane powyżej. Czy muszę wykonać dodatkowy krok, aby uczynić go częścią ścieżki "Pythona"?

z linii poleceń Python (jak zasugerował w jednym z odpowiedziami):

import pkg_resources 
pkg_resources.require('dulwich') 

rentowności [dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]

Więc co to powiedzieć? Importowanie dulwich kończy się niepowodzeniem, ale najwyraźniej pkg_resources może go znaleźć. Co mogę zrobić z tymi informacjami?

+0

w sesji interaktywnej Pythona, uruchom: {{{ >>> import Dulwich >>> print Dulwich .__ version__ }}} co to show? – durin42

+0

Dodano wyniki do sekcji Aktualizacja powyżej –

Odpowiedz

16

To sprawia, że ​​myślę Dulwich nie jest zainstalowany prawidłowo, czy też nie w ścieżce .

Masz absolutną rację. Mercurialne dystrybucje binarne dla Windows są "zamrożone" - korzystają z dołączonego do nich kodu Pythona i interpretera, a zatem niezależnie od pakietów zainstalowanych w systemie PYTHONPATH. Gdy podasz ścieżkę do rozszerzenia hggit w Mercurial.ini, hg spróbuje zaimportować ją za pomocą bezpośredniej ścieżki, ale biblioteka dulwich nie jest importowana jawnie przez hg i nie jest dołączana do jej biblioteki, więc importowanie nie powiedzie się.

Możliwe jest dodanie zarówno Dulwich, jak i HgGit do pliku library.zip, który jest instalowany razem z plikiem hg.exe, ale dla mnie najlepszym sposobem jest zainstalowanie wszystkiego od źródła, w tym polecenia Mercurial i wykonanie poleceń przy użyciu plików .bat zainstalowanych w \ Python \ Scripts. W takim przypadku musisz:

  1. Install Mercurial ze źródła. To buduje "czystą" wersję, ponieważ użytkownicy Windows zwykle nie mają Visual Studio lub alternatywnego kompilatora do kompilowania przyspieszeń C.
  2. Zainstaluj Dulwich - użyłbym najnowszego bagażnika snapshot zarówno dla Git, jak i Dulwich.

    python setup.py --pure zainstalować

  3. zainstalować najnowszy HgGit snapshot

    python setup.py zainstalować

  4. Edycja Mercurial.ini aby umożliwić hggit =

  5. Uruchom Mercurial przy użyciu \ Python \ Scripts \ hg.bat
+0

Co jest nie tak z dodając Dulwich i HgGit do 'library.zip'? Wygląda mi to na lepsze rozwiązanie. –

+2

@Piotr: Nic złego, z tym że 'library.zip' nie zawsze jest zwykłym archiwum. Będziesz potrzebował skryptu takiego jak ten - http://techtonik.rainforce.org/2010/01/repacking-libraryzip-from-py2exe.html –

0

Dopóki nie uzyskasz import dulwich do pracy, hggit nie będzie działać. Sprawdź, czy plik jajowy dulwich znajduje się w Twoim pliku easy-install.pth pod numerem site-packages.

Dalsze debugowania można spróbować zapytać pkg_resources o tym:

import pkg_resources 
pkg_resources.require("dulwich") 
+0

Ta linia znajduje się w pliku easy-install.pth: /c/Python25/lib/site-packages/dulwich-0.5.0-py2.5.egg –

+0

Uruchomiłem polecenie pkg_resources i umieść wyniki w powyższym pytaniu. Co teraz? –

+0

Mogę odtworzyć dokładny wynik przez easy_installing dulwich i usunięcie go z łatwej instalacji.pth Czy ręcznie edytowałeś ścieżkę w łatwej instalacji -/c/Python25 wygląda źle - zastąpiłbym ją prostym dulwich-0.5.0-py2.5.egg Albo jeszcze lepiej, usuń linię i ponownie uruchomić easy_install dulwich –

4

Spróbuj następującej konfiguracji (zmiana na swojej drodze), który działa na mnie:

[extensions] 
; hg-git extention 
hgext.bookmarks = 
hggit = C:\Python26\Lib\site-packages\hg_git-0.2.1-py2.6.egg\hggit 

W moim przypadku, kiedy mam pusta wartość dla hggit =, pojawia się ten sam błąd, co w tym przypadku. Ale mogę bez problemu w powłoce Pythona, więc powinieneś sprawdzić swoją easy-install.pth (jak wskazał David), jeśli zawiera ona dulwich-0.5.0-py2.5.egg. Zainstalowałem również czystą wersję dulwich.

+0

Czy muszę wyodrębnić jajko, aby działało? W moim katalogu -pakietu serwisów mam ten plik .egg, ale nie mam katalogu o nazwie hg_git-0.2.1-py2.6.egg. Czy odwołujesz się do hggit w nierozwiniętym pliku jajecznym? –

+0

Nie mam pliku jajka, a jeśli dobrze pamiętam, plik .egg nie działa poprawnie na moim komputerze. Następnie zainstalowałem używając '' Z 'parametru' easy_install' w celu wyodrębnienia go podczas instalacji. To samo dotyczy 'dulwich'. Mam nadzieję, że ci to pomoże. – van

+0

To działało dla mnie z zainstalowanym Tortoise 1.0.3 Hg 1.5.3. Upewnij się, że używasz -Z kiedy instalujesz easy_install hg-git i poprawiasz ścieżkę hogit powyżej do jakiejkolwiek wersji, która kończy się pobieraniu. – BlackICE

8

Jeśli możesz zainstalować TortoiseHg, zawiera ona dulwich i inne wymagania.

+0

Yup, TortoiseHG jest świetny dla systemu Windows ... – Nikhil

+0

Mam TortoiseHg 1.0.3 i nadal mam ten błąd. – BlackICE

+1

@ David instalowałeś inny plik wykonywalny Mercurial? Upewnij się, że polecenie "hg" wskazuje na plik wykonywalny Mercurial TortoiseHg. lub spróbuj TortoiseHg 1.0.4. – kuy

0

wpadłem na ten problem też z dulwich.errors. Zamiast instalować wszystko od zera. Właśnie skopiowałem dulwich z moich domyślnych pakietów stron do pakietów mercurial-site. pracował bez żadnych problemów.

+1

To zadziała, ale oznacza to, że nie będziesz kompilował rozszerzeń języka C. Dulwich (a więc hg-git) użyje czystej implementacji Pythona i tym samym będzie (znacznie) wolniejszy. – jelmer

10

Znalazłem prostsze rozwiązanie w http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/

A potem znalazłem jeszcze prostsze rozwiązanie sobie:

Aby użyć Mercurial rozszerzenia HG-git na oknach:

  1. zainstalować oficjalny Mercurial binarne
  2. umieścić folder dulwich ze źródeł dulwich i folderu hggit ze źródeł hg-git do katalogu z biblioteki library.zip w folderze instalacyjnym Mercurial
  3. dodać następujące% USERPROFILE% \ Mercurial.ini:

[extensions] 
hgext.bookmarks= 
hggit= 

Aby mieć wsparcie SSH trzeba plink.exe z rodziną PuTTY. Następnie należy dodać następujące Mercurial.ini:

[ui] 
username = John Doe <[email protected]> 
ssh=d:/home/lib/dll/plink.exe -i "d:/home2/ssh-private-key.ppk" 

Podczas łączenia się z serwerem SSH po raz pierwszy, należy rozpocząć putty.exe i spróbować połączyć go używać. Doda odcisk klucza serwera do rejestru. W przeciwnym razie polecenie będzie akceptowało odcisk palca, ale nie przyjmuje żadnych danych wejściowych.

Możesz użyć programu puttygen.exe do generowania kluczy prywatnych. Użyj kluczy bez hasła i użyj agenta uwierzytelniania sant Pageant.exe.

+0

Nie mam pojęcia o Pythonie, więc wszystkie inne metody, na które patrzyłem, albo całkowicie zawiodły, albo nie próbowały. Ten został posortowany, bez problemu. Dzięki! –

+0

Awesome, sprawdziło się ... tak łatwo – Alex

-2

sudo apt-get install python-dev # Uzależnij od Ciebie!

sudo easy_install Dulwich

Sukces!

+0

'apt-get' nie jest poleceniem, które (normalnie) istnieje w systemie Windows ... – anarchivist

0

podstawie techtonik na explanation o przyczynie importu wadą dulwich.errors, znalazłem rozwiązanie, które pojawia się prostsze do mnie niż proponowanych już z nich:

Na Mercurial download page nie jest oferowany

Mercurial <x.y.z> dla Pythona 2.7 na Windows x86 (źródło instalacji)

i

Mercurial <x.y.z> dla Pythona 2.7 na Windows x64 (źródło zainstalować)

jak.Pliki EXE, które instalują moduł Mercurial jako Python w istniejącej instalacji Pythona 2.7 (x86 lub x64).

Jeśli hg-git i dulwich zostały zainstalowane również w tej instalacji Pythona, błędy importu powinny zniknąć.

Jeżeli nie jesteś pewien, co zrobić teraz, mam nadzieję, że to wyjaśnienie krok po kroku pomaga:

wstępne

  • Python 2.7 jest zainstalowany
  • <python 2.7 install dir> i <python 2.7 install dir>\Scripts są w PATH Zmienna środowiskowa
  • hg-git (i dulwich) zostały zainstalowane w tej instalacji Pythona zgodnie z instrukcjami od here

Kroki

  1. Deinstall dowolny istniejąca instalacja Mercurial
  2. Pobierz i zainstaluj jeden z wyżej cytowany plików EXE, w zależności od tego, czy instalacja Pythona 2.7 jest 32-bitowy czy 64-bitowy (Jeśli pojawi się „Python 2.7 nie można znaleźć w rejestrze "błąd, prawdopodobnie potrzebujesz drugiego.)

Teraz hg clone <some git repo> powinien działać na konsoli.

0

Dostałem ten błąd, nawet po pobraniu najnowszego Tortoisehg i upewnieniu się, że zainstalowana została wtyczka hggit, a także moje pliki hcc .ini & miały odpowiedni wpis, aby włączyć hggit.

Okazało się, że mój problem polegał na tym, że na mojej ścieżce miałem zarówno mercurial, jak i tortoisehg. Kiedy więc uruchomiłem komendy hg, używałem hg.exe w folderze mercurial, a nie hg.exe w katalogu torsoisehg.

To ma sens, ale moja mercurialna instalacja nie miała wtyczek. Moją poprawą było usunięcie rtęci z mojej ścieżki, tak więc polecenia hg przechodzą przez katalog tortoisehg, ponieważ zawiera ona hg całkowicie w pakiecie. Zauważ jednak, że zalecaną opcją może być aktualizacja rtęci do wersji z wtyczkami, których potrzebujesz, ale to właśnie dla mnie zadziałało. Próbowałem zastąpić plik library.zip plikiem rtęciowym z plikiem "tortoisehg" i działało, ale doprowadziło to do innych błędów, jakie można sobie wyobrazić.

@ Odpowiedź Techtikika poprowadziła mnie tą drogą, za co jestem wdzięczny.

Podsumowanie: sprawdź, który hg exe uruchamia polecenia hg, sprawdzając ścieżkę, ponieważ plik hg.exe nie znajduje wtyczek z jakiegokolwiek powodu.

Powiązane problemy