Tengo un repositorio de git con muchas carpetas, una de ellas es un módulo de Python instalable con pip, como este:
repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...
Ahora mismo tengo que hacer lo siguiente para instalar:
git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo
¿Es posible instalar el módulo directamente con pip sin clonar explícitamente?
Lo intenté:
pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/
Pero obtengo:
IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'
Respuestas:
Hay una solicitud de extracción con respecto a esta función, y parece que se fusionó para desarrollar la rama hace un mes. La sintaxis es la siguiente :
pip install -e git+https://git.repo/some_repo.git#egg=version_subpkg&subdirectory=repo # install a python package from a repo subdirectory
Probablemente tengamos que esperar un tiempo hasta que se combine con el maestro y se distribuya.
ACTUALIZACIÓN : Esto ahora está disponible y documentado en https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support de la siguiente manera:
Nota: en Windows, debe colocar la URL entre comillas dobles, o obtendrá un error "'subdirectorio' no se reconoce como un comando interno o externo". Por ejemplo, use:
fuente
pip install -e 'git+https://…/repo.git@branch#egg=package&subdirectory=package'
da como resultado que el paquete parezca instalarse y unpackage.egg-link
archivo se coloque en paquetes de sitio, pero apunta al directorio raíz desrc/repo
, no asrc/repo/package
, como era de esperar. Esto significa quepy_modules
no se puede importar y enentry_points
realidad no funciona: ambos generan unImportError: No module named package
.-e
parece necesario, de lo contrariopip freeze
no muestra todo el camino, solo el huevo. Esto sucedió elpip-1.5.4
Ya se indicó en uno de los comentarios debajo de la respuesta correcta, pero solo para resaltar este problema: al ejecutar esto desde la línea de comando de Linux, debe escapar del carácter-
&
ya que ampersand le dice a la línea de comando que ejecute un comando en segundo plano:Observe la barra invertida antes del signo comercial. El comportamiento de escape puede depender de la distribución de Linux; No soy un experto
Si ignora esto, puede encontrarse con un error críptico como el siguiente:
fuente
pip install git+ssh://[email protected]/org_or_username/repo.git@branch#subdirectory=path/to/dubdir