60 votes

Comment installer correctement dulwich pour que hg-git fonctionne sous Windows ?

J'essaie d'utiliser l'extension Mercurial hg-git sous Windows (Windows 7 64 bits, pour être précis). J'ai installé Mercurial et Git. J'ai installé Python 2.5 (32 bits).

J'ai suivi les instructions sur http://hg-git.github.com/ pour installer l'extension. L'installation initiale de easy_install a échoué parce qu'elle était incapable de compiler dulwich sans Visual Studio 2003.

J'ai installé dulwich manuellement par :

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

Maintenant, lorsque je lance easy_install hg-git, il réussit (puisque la dépendance dulwich est satisfaite).

Dans mon C:\Users\username\Mercurial.ini Je l'ai fait :

[extensions]
hgext.bookmarks =
hggit =

Quand je tape 'hg' à l'invite de commande, je vois : "*** failed to import extension hggit : No module named hggit"

Je regarde sous mon c : \Python25 le dossier, la seule référence à hggit que je vois est Lib\site-packages\hg_git-0.2.1-py2.5.egg . Est-il censé être extrait quelque part, ou doit-il fonctionner tel quel ?

Comme cela n'a pas fonctionné, j'ai essayé les instructions " plus impliquées " de la page hg-git qui suggéraient de cloner git://github.com/schacon/hg-git.git et de référencer le chemin dans ma configuration Mercurial. J'ai cloné le repo et modifié mon fichier d'extensions pour qu'il ressemble à ceci :

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

Maintenant, quand je lance hg, je vois : *** failed to import extension hggit from c : \code\hg -git \hggit : Aucun module nommé dulwich.errors.

Ok, donc cela me dit qu'il trouve hggit maintenant, parce que je peux voir dans hg-git \hggit\git_handler.py qu'il appelle

from dulwich.errors import HangupException

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

Mise à jour :

Depuis la ligne de commande Python :

import dulwich

donne Import Error: No module named dulwich

Toutefois, en vertu de C:\Python25\Lib\site -J'ai bien un dossier dulwich-0.5.0-py2.5.egg qui semble être rempli. Il a été créé par les étapes mentionnées ci-dessus. Y a-t-il une étape supplémentaire que je dois suivre pour qu'il fasse partie du "chemin" Python ?

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

import pkg_resources
pkg_resources.require('dulwich')

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

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

0 votes

Dans une session interactive Python, exécutez : {{{ >>> import dulwich >>> print dulwich.__version__ }}} Qu'est-ce que cela montre ?

0 votes

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

0 votes

Je suppose que votre question porte sur le logiciel Window de Microsoft (et non sur n'importe quel système de fenêtrage). Si quelqu'un vient à cette question depuis Debian (ou similaire) alors vous pouvez faire sudo apt install python-dulwich

16voto

techtonik Points 2945

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

Vous avez tout à fait raison. Les distributions binaires Mercurial pour Windows sont "gelées" - elles utilisent le code et l'interpréteur Python fournis avec elles et sont donc indépendantes des paquets installés dans le PYTHONPATH du système. Lorsque vous spécifiez le chemin vers l'extension hggit dans Mercurial.ini, hg essaie 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 liée à sa bibliothèque, donc l'importation échoue.

Il est possible d'ajouter à la fois Dulwich et HgGit dans le fichier library.zip qui est installé avec hg.exe, mais pour moi, la meilleure façon est d'installer tout à partir des sources, y compris Mercurial, et d'exécuter les commandes à l'aide de fichiers .bat installés dans le fichier \Python\<strkeep>scripts<strkeep>. Dans ce cas, vous devrez :

  1. Installer Mercurial de la source. Il s'agit d'une version "pure", car les utilisateurs de Windows ne disposent généralement pas de Visual Studio ou d'un compilateur alternatif pour la compilation de speedups C.

  2. Installer Dulwich - j'utiliserais le dernier trunk instantané pour Git et Dulwich.

    python setup.py --pure install

  3. Installer la dernière version de HgGit instantané

    python setup.py install

  4. Modifier Mercurial.ini pour activer hggit =

  5. Lancez Mercurial en utilisant votre \Python\<strkeep>scripts<strkeep>\hg.bat

0 votes

Qu'est-ce qui ne va pas avec l'ajout de Dulwich et HgGit dans library.zip ? Cela me semble être une meilleure solution.

2 votes

@Piotr : Rien de mal sauf que library.zip n'est pas toujours une archive ordinaire. Vous aurez donc besoin d'un script comme ceci - techtonik.rainforce.org/2010/01/

0 votes

Ou si vous utilisez Debian sudo apt install python-dulwich . (J'ai trouvé cela en faisant une recherche, mais je n'utilise pas MS)

12voto

nponeccop Points 8111

J'ai trouvé 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 j'ai trouvé moi-même une solution encore plus simple :

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

  1. installer les binaires officiels de Mercurial
  2. mettre le dossier dulwich des sources dulwich et le dossier hggit des sources hg-git à la Racine de library.zip dans le dossier d'installation de Mercurial
  3. ajoutez ce qui suit à %USERPROFILE% \Mercurial.ini :

[extensions]
hgext.bookmarks=
hggit=

Pour avoir le support SSH vous avez besoin de plink.exe de la famille PuTTY. Ensuite, vous devez ajouter les éléments suivants au fichier Mercurial.ini :

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

Lorsque vous vous connectez à un serveur SSH pour la première fois, vous devez lancer putty.exe et essayer de vous connecter en l'utilisant. Il ajoutera l'empreinte de la clé du serveur dans le registre. Sinon, plink vous demandera d'accepter l'empreinte mais il n'accepte aucune entrée.

Vous pouvez utiliser puttygen.exe pour générer des clés privées. Vous pouvez soit utiliser des clés sans phrase de passe, soit utiliser l'agent d'authentification ssh Pageant.exe.

0 votes

Je ne connais rien à Python, donc toutes les autres méthodes que j'ai examinées, je les ai soit totalement ratées, soit pas essayées. Celle-ci a permis de régler le problème, sans problème. Merci !

1 votes

Dans le sillage de bitbucket abandonnant le support mercuriel récemment, ceci est plus pertinent que jamais et a fonctionné pour moi !

0 votes

Je suis content qu'il fonctionne encore après 8 ans de pourriture potentielle du code.

8voto

kuy Points 449

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

2 votes

@David avez-vous installé l'autre exécutable Mercurial ? Veuillez vous assurer que votre commande "hg" pointe sur l'exécutable Mercurial de TortoiseHg. ou essayez TortoiseHg 1.0.4.

0 votes

Cela a fonctionné pour moi, en suivant les instructions aquí

4voto

van Points 18052

Essayez la configuration suivante (modifiez-la en fonction de 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, lorsque j'ai une valeur vide pour hggit = J'obtiens la même erreur que vous dans ce cas. Mais je peux import dulwich sans problème dans le shell python, donc vous devriez vérifier votre easy-install.pth (comme l'a fait remarquer David) si elle contient dulwich-0.5.0-py2.5.egg . J'ai installé la version pure de dulwich également.

0 votes

Dois-je extraire l'œuf pour que ça marche ? 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. Faites-vous référence à hggit dans le fichier egg non décompressé ?

0 votes

Je n'ai pas le fichier egg, et si je me souviens bien, le fichier .egg ne fonctionnait pas correctement sur ma machine. Alors j'ai installé en utilisant -Z paramètre de easy_install afin de l'extraire lors de l'installation. Il en va de même pour dulwich . J'espère que cela vous aidera.

0 votes

Cela a fonctionné pour moi avec Tortoise 1.0.3 Hg 1.5.3 installé. Assurez-vous d'utiliser le -Z lorsque vous installez easy_install hg-git, et corrigez le chemin de hggit ci-dessus en fonction de la version qu'il finit par télécharger.

0voto

David Fraser Points 1792

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

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

import pkg_resources
pkg_resources.require("dulwich")

0 votes

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

0 votes

J'ai lancé la commande pkg_resources et mis les résultats dans la question ci-dessus. Et maintenant ?

0 votes

Je peux reproduire votre résultat exact en installant easy_install dulwich et en le supprimant de easy-install.pth Avez-vous modifié manuellement le chemin dans votre easy-install - le /c/Python25 semble erroné - je le remplacerais par un dulwich-0.5.0-py2.5.egg ou encore mieux, supprimez la ligne et relancez easy_install dulwich

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X