python pip – instalar desde el directorio local

4 minutos de lectura

avatar de usuario
tampa

Tengo que descargar un repositorio de git python e instalarlo ya que la versión de pypi no está actualizada.

Normalmente haría esto:

pip install mypackage
pip install mypackage[redis]

Ahora tengo el repositorio clonado en la siguiente carpeta:

/opt/mipaquete

Entonces, ¿cómo ejecuto para instalar lo siguiente sin usar la versión pypi sino la local?

pip --flag /opt/mypackage install mypackage
pip --flag /opt/mypackage install mypackage[redis]

Hay banderas de pip disponibles y no veo cómo lograrlas:

Commands:
  install                     Install packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  search                      Search PyPI for packages.
  wheel                       Build wheels from your requirements.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log <path>                Path to a verbose appending log.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to alternate CA bundle.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check

  • Creo que estás buscando la bandera -e. pip install -e . dentro del directorio del paquete debería funcionar.

    – fabianegli

    8 de enero de 2017 a las 18:11


avatar de usuario
MattDMo

Todo lo que necesitas hacer es ejecutar

pip install /opt/mypackage

y pip buscará /opt/mypackage para setup.pyconstruya una rueda y luego instálela.

El problema con el uso de la -e bandera para pip install como se sugiere en los comentarios y esta respuesta es que esto requiere que el directorio fuente original permanezca en su lugar durante el tiempo que desee usar el módulo. Es genial si eres un desarrollador que trabaja en la fuente, pero si solo intentas instalar un paquete, es la elección incorrecta.

Alternativamente, ni siquiera necesita descargar el repositorio de Github. pepita apoya instalar directamente desde repositorios git usando una variedad de protocolos que incluyen HTTP, HTTPS y SSH, entre otros. Consulte los documentos a los que me vinculé para ver ejemplos.

  • Pero necesito instalar una dependencia opcional, por ejemplo, mypackage[redis] ¿Cómo se aborda eso? Hay alrededor de 15 instalaciones de dependencia opcionales, pero solo necesito 1.

    – Tampa

    8 de enero de 2017 a las 20:09


  • @Tampa por lo que puedo decir, pip install /opt/mypackage[redis] Deberia trabajar.

    – MattDMo

    8 de enero de 2017 a las 20:18

  • ¡Gracias! Sí, cuando usé -e con un entorno conda, se instaló en el lugar equivocado (es decir, en el directorio de llamadas). Se eliminó la bandera -e y se instaló en los paquetes de mi sitio conda

    – Adam Hughes

    24 de febrero de 2020 a las 15:05

  • Además, ese indicador -e (editable) es útil en general si eso es lo que desea, simplemente no es la respuesta a esta pregunta en particular, ¿correcto?

    – Manzanas14

    6 jun a las 14:51

  • @ Apples14 No es la respuesta a esta pregunta a no ser que quiere hacer más desarrollo en el paquete. Para uso estándar (“Solo quiero importar este paquete en mi código”), -e no es deseable

    – MattDMo

    6 jun a las 15:54

avatar de usuario
fabianegli

Estabas buscando ayuda en instalaciones con pepita. Puedes encontrarlo con el siguiente comando:

pip install --help

Correr pip install -e /path/to/package instala el paquete de una manera que puede editar el paquete, y cuando una nueva llamada de importación lo busque, importará el código del paquete editado. Esto puede ser muy útil para el desarrollo de paquetes.

  • Como expliqué en mi respuesta, instalar con -e requiere que la fuente del paquete permanezca en el mismo lugar (/opt/mypackage en este caso) para siempre, lo que puede no ser deseable, o incluso posible si está en /tmp. señalando pip directamente al directorio que contiene setup.py es definitivamente el camino a seguir aquí.

    – MattDMo

    12 de julio de 2020 a las 1:02

¿Ha sido útil esta solución?