2010-03-02 7 views
48

J'essaie d'utiliser l'extension mercurial hg-git sur Windows (Windows 7 64 bits, pour être précis). J'ai Mercurial et Git installé. J'ai Python 2.5 (32 bits) installé. J'ai suivi les instructions sur le http://hg-git.github.com/ pour installer l'extension. Le easy_install initial a échoué parce qu'il n'a pas pu compiler Dulwich sans Visual Studio 2003.Comment installer correctement dulwich pour que hg-git fonctionne sur Windows?

J'ai installé manuellement Dulwich par:

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

maintenant, quand je lance easy_install hg-git, elle réussit (puisque la dépendance Dulwich est satisfaite).

Dans mon C: \ Users \ nom d'utilisateur \ Mercurial.ini, j'ai:

[extensions] 
hgext.bookmarks = 
hggit = 

Lorsque je tape 'hg' à une invite de commande, je vois: « *** a échoué à importer l'extension hggit: Aucun module nommé hggit "

En regardant dans mon dossier c: \ Python25, la seule référence à hggit que je vois est Lib\site-packages\hg_git-0.2.1-py2.5.egg. Est-ce censé être extrait quelque part, ou devrait-il fonctionner tel quel? Comme cela a échoué, j'ai essayé les instructions "plus impliquées" de la page hg-git qui suggérait de cloner git: //github.com/schacon/hg-git.git et de référencer le chemin dans ma configuration Mercurial. Je le repo cloné, et changé mon dossier extensions pour ressembler à:

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

Maintenant, quand je lance hg, je vois: *** Impossible d'importer l'extension hggit de c: \ Code \ hggit \ hggit: Aucun module nommé dulwich.errors.

Ok, ce qui me dit qu'il est hggit trouver maintenant, parce que je peux voir dans hggit \ hggit \ git_handler.py qu'il appelle

from dulwich.errors import HangupException 

Cela me fait penser à Dulwich est pas installé correctement ou pas dans le chemin.

Mise à jour:

De commande Python ligne:

import dulwich 

cède Import Error: No module named dulwich

Cependant, sous C: \ Python25 \ Lib \ site-packages, j'ai un dulwich- Dossier 0.5.0-py2.5.egg qui semble être rempli. Cela a été créé par les étapes mentionnées ci-dessus. Y a-t-il une étape supplémentaire que je dois prendre pour la faire partie du "chemin" de Python?

ligne de commande Python (comme suggéré dans l'une des réponses):

import pkg_resources 
pkg_resources.require('dulwich') 

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

Alors qu'est-ce qui me dit? L'importation de dulwich échoue, mais apparemment pkg_resources peut le trouver. Que puis-je faire avec cette information?

+0

Dans une session interactive Python, exécutez: {{{ >>> import Dulwich >>> print Dulwich .__ version__ }}} Qu'est-ce que ce spectacle? – durin42

+0

Ajout des résultats à la section Mise à jour ci-dessus –

Répondre

16

Cela me fait penser Dulwich n'est pas installé correctement ou pas dans le chemin .

Vous avez absolument raison. Les distributions binaires Mercurial pour Windows sont 'gelées' - elles utilisent le code Python et l'interpréteur fourni avec elles et sont donc indépendantes des paquets installés dans le système PYTHONPATH. Lorsque vous spécifiez le chemin d'accès à l'extension hggit dans Mercurial.ini, hg tente de l'importer en utilisant le chemin direct, mais la bibliothèque dulwich n'est pas importée explicitement par hg et n'est pas associée à sa bibliothèque, l'importation échoue donc.

Il est possible d'ajouter Dulwich et HgGit dans library.zip installé avec hg.exe, mais pour moi, le meilleur moyen est d'installer tout depuis la source, y compris Mercurial, et d'exécuter les commandes en utilisant les fichiers .bat Python \ Scripts. Dans ce cas, vous devrez:

  1. Install Mercurial de la source. Cela génère une version "pure", car les utilisateurs Windows n'ont généralement pas Visual Studio ou un compilateur alternatif pour compiler les accélérations C.
  2. Installer Dulwich - J'utiliserais le dernier tronc snapshot pour Git et Dulwich.

    python setup.py --pure installer

  3. installer la dernière HgGit snapshot

    python setup.py install

  4. Modifier Mercurial.ini pour permettre hggit =

  5. Lancement Mercurial en utilisant votre \ Python \ Scripts \ hg.bat
+0

Quel est le problème avec ajouter Dulwich et HgGit dans 'library.zip'? Cela ressemble à une meilleure solution pour moi. –

+2

@Piotr: Rien à redire sauf que 'library.zip' n'est pas toujours une archive ordinaire. Vous aurez donc besoin d'un script comme celui-ci - http://techtonik.rainforce.org/2010/01/repacking-libraryzip-from-py2exe.html –

0

Jusqu'à ce que vous obteniez import dulwich pour fonctionner, hggit ne fonctionnera pas. Vérifiez que le fichier dulwich est dans votre fichier easy-install.pth sous site-packages.

Pour plus de débogage, vous pouvez demander pkg_resources à ce sujet:

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

Cette ligne se trouve dans mon fichier easy-install.pth: /c/Python25/lib/site-packages/dulwich-0.5.0-py2.5.egg –

+0

J'ai exécuté la commande pkg_resources et mettez les résultats dans la question ci-dessus. Maintenant quoi? –

+0

Je peux reproduire votre résultat exact en installant easy dulwich et en le supprimant de easy-install.pth Avez-vous modifié manuellement le chemin dans votre installation facile - le/c/Python25 semble faux - Je remplacerais cela par un droit dulwich-0.5.0-py2.5.egg Ou encore mieux, retirez la ligne et re-run easy_install dulwich –

4

Essayez configuration suivante (changement à votre chemin), qui fonctionne pour moi:

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

Dans mon cas, quand je valeur vide pour hggit =, j'obtiens la même erreur que vous faites dans ce cas. Mais je peux import dulwich sans problème en shell python, donc vous devriez vérifier votre easy-install.pth (comme l'a souligné David) s'il contient dulwich-0.5.0-py2.5.egg. J'ai également installé la version pure de dulwich.

+0

Dois-je extraire l'oeuf pour que cela fonctionne? Dans mon répertoire site-packages, j'ai ce fichier .egg, mais je n'ai pas de répertoire nommé hg_git-0.2.1-py2.6.egg. Est-ce que vous faites référence à hggit dans le fichier des œufs non expansés? –

+0

Je n'ai pas le fichier oeuf, et si je me souviens bien le fichier .egg ne fonctionnait pas correctement sur ma machine. Puis j'ai installé en utilisant le paramètre '-Z' de' easy_install' afin de l'extraire pendant l'installation. La même chose s'applique pour 'dulwich'. J'espère que cela vous aide. – van

+0

Cela a fonctionné pour moi avec Tortoise 1.0.3 Hg 1.5.3 installé. Assurez-vous que vous utilisez le -Z lorsque vous installez easy-install hg-git, et corrigez le chemin hggit ci-dessus vers la version qu'il finira par télécharger – BlackICE

8

Si vous pouvez installer TortoiseHg, cela inclut dulwich et d'autres exigences.

+0

Yup, TortoiseHG est idéal pour les fenêtres ... – Nikhil

+0

J'ai TortoiseHg 1.0.3 et toujours eu cette erreur. – BlackICE

+1

@David avez-vous installé d'autres exécutables Mercurial? S'il vous plaît assurez-vous que votre commande "hg" pointe l'exécutable Mercurial de TortoiseHg. ou essayez TortoiseHg 1.0.4. – kuy

0

je suis tombé sur ce problème aussi avec dulwich.errors. Au lieu d'installer tout à partir de zéro. Je viens de copier dulwich de mes paquets de site par défaut vers les paquets de site mercurial. travaillé sans problèmes.

+1

Cela fonctionnera, mais cela signifie que vous ne compilerez pas les extensions C. Dulwich (et donc hg-git) utilisera l'implémentation python pure et sera donc (significativement) plus lent. – jelmer

10

je trouve une solution plus simple à http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/

Et puis je trouve moi-même solution encore plus simple:

Pour utiliser le hg-git l'extension Mercurial sous Windows:

  1. installer le Mercurial officiel binaires
  2. Placez le dossier dulwich depuis les sources dulwich et le dossier hggit depuis les sources hg-git jusqu'à la racine de library.zip dans le dossier d'installation Mercurial
  3. ajouter ce qui suit à% USERPROFILE% \ Mercurial.ini:

[extensions] 
hgext.bookmarks= 
hggit= 

Pour avoir le soutien de SSH vous avez besoin PLINK.EXE de la famille PuTTY. Après cela, vous devez ajouter ce qui suit à Mercurial.ini:

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

Lors de la connexion à un serveur SSH pour la première fois, vous devriez commencer putty.exe et essayez de vous connecter à l'utiliser. Il va ajouter l'empreinte digitale de la clé du serveur au registre. Sinon, plink vous demandera d'accepter l'empreinte digitale mais n'accepte aucune entrée.

Vous pouvez utiliser puttygen.exe pour générer des clés privées. Utilisez les clés sans mot de passe ou utilisez l'agent d'authentification ssh Pageant.exe.

+0

Je suis complètement dépourvu de Python, donc toutes les autres méthodes que j'ai regardées ont totalement échoué, ou n'ont pas essayé. Celui-ci a trié, pas de problème. Merci! –

+0

Génial, fait fonctionner ... si facile – Alex

-2

sudo apt-get installer python-dev # Dam you dependency!

easy_install Dulwich sudo

succès!

+0

'apt-get' n'est pas une commande qui existe (normalement) sous Windows ... – anarchivist

0

Basé sur explanation de techtonik de la raison de l'importation de défaut de dulwich.errors, je trouve une solution qui semble plus simple pour moi que celles déjà proposées:

Sur le Mercurial download page il est proposé

Mercurial <x.y.z> pour Python 2.7 sur Windows x86 (source d'installation)

et

Mercurial <x.y.z> pour Python 2.7 sur Windows x64 (source installation)

comme.Fichiers EXE qui installent Mercurial en tant que module Python dans une installation Python 2.7 (x86 ou x64) existante.

Si hg-git et dulwich ont également été installés sur cette installation Python, les erreurs d'importation doivent disparaître.

Si vous n'êtes pas sûr de ce qu'il faut faire maintenant, j'espère que cette explication étape par étape permet:

Pré-requis

  • Python 2.7 est installé
  • <python 2.7 install dir> et <python 2.7 install dir>\Scripts sont dans le PATH variable d'environnement
  • hg-git (et dulwich) ont été installés dans cette installation Python via les instructions de here

étapes

  1. Désinstallez toute installation Mercurial existante
  2. Téléchargez et installez l'un des fichiers EXE ci-dessus cité, selon que votre installation Python 2.7 est 32bit ou 64bit (Si vous obtenez un « Python 2.7 ne peut pas être trouvé dans le registre "erreur, vous avez probablement besoin de l'autre.)

Maintenant, hg clone <some git repo> devrait fonctionner sur la console.

0

J'ai eu cette erreur même après avoir téléchargé le dernier Tortoisehg et m'assurer que le plugin hggit a été installé ainsi que mes fichiers .ini & hgrc avaient la bonne entrée pour activer hggit.

Il s'avère que mon problème était que j'avais à la fois mercurial et tortoisehg sur mon chemin. Donc, quand j'ai couru des commandes hg, il utilisait le hg.exe dans le dossier mercurial par opposition au hg.exe dans le répertoire torsoisehg.

Cela a du sens, mais mon installation Mercurial n'avait pas les plug-ins. Ma solution était de supprimer mercurial de mon chemin afin que les commandes hg passent par le répertoire tortoisehg car il a été complètement intégré. Notez cependant, l'option recommandée pourrait être de mettre à jour mercurial vers une version qui a les plugins dont on a besoin mais c'est ce qui a fonctionné pour moi. J'ai essayé de remplacer le library.zip dans mercurial avec celui dans tortoisehg et ceci a fonctionné mais il a mené à d'autres erreurs comme on l'imagine.

@ La réponse de techtonik m'a conduit sur cette route pour laquelle je suis reconnaissant.

Récapitulatif: vérifiez que hg exe exécute vos commandes hg en vérifiant votre chemin, car hg.exe ne trouve pas les plugins pour une raison quelconque.