python windows mercurial hg-git dulwich

python - ¿Cómo instalo correctamente a dulwich para que hg-git funcione en Windows?



mercurial (9)

Estoy tratando de usar la extensión Mercurial hg-git en Windows (Windows 7 de 64 bits, para ser específico). Tengo Mercurial y Git instalados. Tengo Python 2.5 (32 bits) instalado.

Seguí las instrucciones en http://hg-git.github.com/ para instalar la extensión. La instalación fácil inicial falló porque no fue posible compilar dulwich sin Visual Studio 2003.

Instalé el dulwich manualmente por:

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

Ahora cuando ejecuto easy_install hg-git, tiene éxito (ya que se cumple la dependencia de dulwich).

En mi C: / Users / username / Mercurial.ini, tengo:

[extensions] hgext.bookmarks = hggit =

Cuando escribo ''hg'' en el símbolo del sistema, veo: "*** no se pudo importar la extensión hggit: ningún módulo llamado hggit"

En mi carpeta c: / Python25, la única referencia a hggit que veo es Lib/site-packages/hg_git-0.2.1-py2.5.egg . ¿Se supone que se extrae en algún lugar, o debería funcionar como está?

Como eso falló, intenté las instrucciones "más complicadas" de la página hg-git que sugerían clonar git: //github.com/schacon/hg-git.git y hacer referencia a la ruta en mi configuración de Mercurial. Cloné el repositorio y cambié mi archivo de extensiones para que se vea así:

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

Ahora cuando ejecuto hg, veo: *** no pudo importar la extensión hggit de c: / code / hg-git / hggit: Ningún módulo llamado dulwich.errors.

Ok, eso me dice que está encontrando hggit ahora, porque puedo ver en hg-git / hggit / git_handler.py que llama

from dulwich.errors import HangupException

Eso me hace pensar que dulwich no está instalado correctamente, o no en la ruta.

Actualizar:

Desde la línea de comando de Python:

import dulwich

produce Import Error: No module named dulwich

Sin embargo, en C: / Python25 / Lib / site-packages, tengo una carpeta dulwich-0.5.0-py2.5.egg que parece estar llena. Esto fue creado por los pasos mencionados anteriormente. ¿Hay algún paso adicional que deba tomar para que forme parte de la "ruta" de Python?

Desde la línea de comandos de Python (como se sugiere en una de las respuestas):

import pkg_resources pkg_resources.require(''dulwich'')

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

Entonces, ¿qué me dice eso? La importación de dulwich falla, pero aparentemente pkg_resources puede encontrarla. ¿Qué puedo hacer con esa información?


Eso me hace pensar que dulwich no está instalado correctamente, o no en la ruta.

Estás absolutamente en lo correcto. Las distribuciones binarias de Mercurial para Windows están "congeladas"; usan el código Python y el intérprete incluido con ellas y, por lo tanto, son independientes de los paquetes instalados en el sistema PYTHONPATH. Cuando especifica la ruta a la extensión hggit en Mercurial.ini, hg intenta importarlo usando la ruta directa, pero la biblioteca dulwich no se importa explícitamente por hg y no se incluye con su biblioteca, por lo que la importación falla.

Es posible agregar tanto Dulwich como HgGit en library.zip que se instala junto con hg.exe, pero para mí la mejor manera es instalar todo desde la fuente, incluidos Mercurial, y ejecutar comandos utilizando los archivos .bat instalados en / Python / Scripts. En este caso, necesitarás:

  1. Instala Mercurial desde la fuente. Esto crea una versión "pura", porque los usuarios de Windows generalmente no tienen Visual Studio o compilador alternativo para compilar aceleraciones de C.
  2. Instalar Dulwich: usaría la última snapshot troncos tanto para Git como para Dulwich.

    python setup.py --pura de instalación

  3. Instalar la última snapshot HgGit

    instalación de python setup.py

  4. Editar Mercurial.ini para habilitar hggit =

  5. Inicie Mercurial con su / Python / Scripts / hg.bat

sudo apt-get install python-dev # ¡Presión tuya!

sudo easy_install dulwich

¡Éxito!


Basado en la explanation de techtonik del motivo de la falla en la importación de los dulwich.errors de dulwich.errors , encontré una solución que me parece más simple que las ya propuestas:

En la página de descarga de Mercurial se ofrece

Mercurial <xyz> para Python 2.7 en Windows x86 (instalación de origen)

y

Mercurial <xyz> para Python 2.7 en Windows x64 (instalación de origen)

como archivos .EXE que instalan Mercurial como un módulo de Python en una instalación existente de Python 2.7 (x86 o x64).

Si hg-git y dulwich también se han instalado en esta instalación de Python, los errores de importación deberían desaparecer.

Si no está seguro de qué hacer ahora, espero que esta explicación paso a paso ayude:

Requisitos previos

  • Python 2.7 está instalado
  • <python 2.7 install dir> y <python 2.7 install dir>/Scripts están en la PATH entorno PATH
  • hg-git (y dulwich) se han instalado en esta instalación de Python a través de las instrucciones de aquí

Pasos

  1. Desinstalar cualquier instalación existente de Mercurial
  2. Descargue e instale uno de los archivos EXE citados anteriormente, dependiendo de si su instalación de Python 2.7 es de 32 bits o 64 bits (si obtiene el error "Python 2.7 no se puede encontrar en el registro", probablemente necesite el otro).

Ahora hg clone <some git repo> debería funcionar en la consola.


Encontré una solución más simple en http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/

Y luego encontré una solución aún más simple:

Para usar la extensión Mercurial de hg-git en Windows:

  1. instalar los binarios oficiales de Mercurial
  2. ponga la carpeta dulwich de fuentes de dulwich y la carpeta hggit de fuentes hg-git a la raíz de library.zip en la carpeta de instalación de Mercurial
  3. agregue lo siguiente a% USERPROFILE% / Mercurial.ini:

[extensions] hgext.bookmarks= hggit=

Para tener soporte SSH necesita plink.exe de la familia PuTTY. Después de eso, debe agregar lo siguiente a Mercurial.ini:

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

Cuando se conecte a un servidor SSH por primera vez, debe iniciar putty.exe e intentar conectarse utilizando él. Agregará la huella digital de la clave del servidor al registro. De lo contrario, plink le pedirá que acepte la huella dactilar, pero no acepta ninguna entrada.

Puede usar puttygen.exe para generar claves privadas. Utilice claves sin una frase de contraseña o use el agente de autenticación sant Pageant.exe.


Hasta que no te import dulwich al trabajo, hggit no funcionará. Compruebe que el archivo de huevo dulwich esté en su archivo easy-install.pth en site-packages .

Para una mayor depuración puedes intentar preguntarle a pkg_resources :

import pkg_resources pkg_resources.require("dulwich")


Intenta seguir la configuración (cambiar a tu ruta), que funciona para mí:

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

En mi caso, cuando tengo un valor vacío para hggit = , obtengo el mismo error que en este caso. Pero puedo import dulwich sin problema en el shell de Python, por lo que debes comprobar tu easy-install.pth (como lo señala David) si contiene dulwich-0.5.0-py2.5.egg . dulwich la versión pura de dulwich también.


Obtuve este error incluso después de descargar la última Tortoisehg y de asegurarme de que el complemento hggit se haya instalado, así como que mis archivos .ini y hgrc tuvieran la entrada correcta para habilitar hggit.

Resulta que mi problema era que tenía mercurial y tortoisehg en mi camino. Así que cuando ejecuté los comandos hg, estaba usando hg.exe en la carpeta mercurial en lugar de hg.exe en el directorio torsoisehg.

Esto tiene sentido, pero mi instalación mercurial no tenía enchufes. Mi solución fue eliminar Mercurial de mi camino por lo que los comandos hg pasan por el directorio tortoisehg ya que tiene hg completamente incluido. Sin embargo, tenga en cuenta que la opción recomendada podría ser actualizar Mercurual a una versión que tenga los complementos que uno necesita, pero esto es lo que funcionó para mí. Intenté reemplazar la library.zip en mercurial con la de tortoisehg y esto funcionó, pero dio lugar a otros errores como uno podría imaginarse.

La respuesta de @ techtonik me llevó por este camino, por lo que estoy agradecido.

Recapitulación: compruebe qué hg exe está ejecutando sus comandos hg comprobando su ruta porque ese hg.exe no encuentra los complementos por el motivo que sea.


Si puede instalar TortoiseHg, incluye requisitos de dulwich y otros.


También encontré este problema con dulwich.errors. En lugar de instalar todo desde cero. Acabo de copiar dulwich de mis paquetes de sitio predeterminados a los paquetes de sitio mercurial. trabajó sin problemas