¿Es posible instalar paquetes usando pip del sistema de archivos local?
He ejecutado python setup.py sdistmi paquete, que ha creado el archivo tar.gz apropiado. Este archivo se almacena en mi sistema en /srv/pkg/mypackage/mypackage-0.1.0.tar.gz.
Ahora en un entorno virtual, me gustaría instalar paquetes provenientes de pypi o de la ubicación local específica /srv/pkg.
es posible?
PD
: Sé que puedo especificar pip install /srv/pkg/mypackage/mypackage-0.1.0.tar.gz. Eso funcionará, pero estoy hablando de usar la /srv/pkgubicación como otro lugar para buscar pip si escribí pip install mypackage.

pip install <Path-to-WHL-file>.Respuestas:
Estoy bastante seguro de que lo que estás buscando se llama
--find-linksopción.Aunque es posible que deba generar un dummy
index.htmlpara su índice de paquete local que enumere los enlaces a todos los paquetes. Esta herramienta ayuda a:https://github.com/wolever/pip2pi
fuente
pip install mypackage --no-index --find-links file:///srv/pkg/mypackageDeberia trabajar.easy_install --allow-hosts=None --find-links file:///srv/pkg/mypackage mypackage--find-linksaún permitirá buscar en PyPI si el paquete no se encuentra en la ubicación especificada o si hay una versión más nueva disponible. En Windows, encuentro que combinar esto con--only-binary=packagename(o--only-binary=:all:) es extraordinariamente útil. Esto evita que pip intente descargar cualquier paquete con dependencias nativas que solo tengan distribuciones de origen en PyPI (y por lo tanto requieran compilación), que es la razón más común por la que tengo que intentar instalar desde un directorio. A diferencia--no-index, todavía puedo instalar otros paquetes desde PyPI.Qué pasa::
p.ej,
pip install -e /srv/pkgdonde / srv / pkg es el directorio de nivel superior donde se puede encontrar 'setup.py'.
fuente
--editablees que parece buscar en el directorio del paquete local y establecer la fuente como un repositorio git si hay uno, un poco más flexible que solo una carpeta. Sin embargo, no puedo encontrar documentación para esto.do pip install -ecomprueba el código desde el control remoto de git, me gustaría instalar el código tal como está (con cambios aún no en el control remoto).Estoy instalando
pyfuzzypero no está en PyPI; devuelve el mensaje:No matching distribution found for pyfuzzy.Probé la respuesta aceptada
Pero tampoco funciona y devuelve el siguiente error:
Por fin, he encontrado una buena manera simple allí: https://pip.pypa.io/en/latest/reference/pip_install.html
Entonces el siguiente comando funcionó para mí:
Espero que te ayude.
fuente
Could not find a version that satisfieserror. Gracias.Esta es la solución que terminé usando:
Reuní esto a partir de ejemplos de instalación de pip , así como de la respuesta de Rikard en otra pregunta . El argumento "--pre" le permite instalar versiones que no son de producción. El argumento "--no-index" evita buscar en los índices PyPI. El "--find-links =". Las búsquedas de argumentos en la carpeta local (esto puede ser relativo o absoluto). Usé los argumentos "--log-file", "log.txt" y "-vv" para la depuración. El argumento "--upgrade" le permite instalar versiones más nuevas sobre las anteriores.
También encontré una buena manera de desinstalarlos. Esto es útil cuando tiene varios entornos Python diferentes. Es el mismo formato básico, simplemente usando "desinstalar" en lugar de "instalar", con una medida de seguridad para evitar desinstalaciones no deseadas:
La carpeta local contiene estos archivos: install.py, uninstall.py, mypackagename-1.0.zip
fuente
¡Una opción --find-links hace el trabajo y funciona desde el
requirements.txtarchivo!Puede colocar archivos de paquetes en alguna carpeta y tomar el último sin cambiar el archivo de requisitos, por ejemplo
requirements:Ahora en el
requirements/base.txtpuesto:Una forma ordenada de actualizar paquetes propietarios, simplemente suelte uno nuevo en la carpeta
De esta manera, puede instalar paquetes desde
local folderANDpypicon la misma llamada única:pip install -r requirements/production.txtPD. Consulte mi bifurcación cookiecutter-djangopackage para ver cómo dividir los requisitos y usar la organización de requisitos basada en carpetas.
fuente
Desde la página de paquetes de instalación, simplemente puede ejecutar:
donde / srv / pkg / mypackage es el directorio que contiene setup.py .
Además 1 , puede instalarlo desde el archivo comprimido:
1 Aunque se señaló en la pregunta, debido a su popularidad, también se incluye.
fuente
Suponiendo que tiene virtualenv y un
requirements.txtarchivo, puede definir dentro de este archivo dónde obtener los paquetes:fuente
Tener requisitos en
requirements.txtyegg_dircomo directoriopuedes construir tu caché local:
$ pip download -r requirements.txt -d eggs_direntonces, usar ese "caché" es simple como:
$ pip install -r requirements.txt --find-links=eggs_dirfuente
Para instalar solo desde local necesita 2 opciones:
--find-links: dónde buscar dependencias. No es necesario elfile://prefijo mencionado por otros.--no-index: no busque en los índices pypi las dependencias faltantes (dependencias no instaladas y no en la--find-linksruta).Para que pueda ejecutar desde cualquier carpeta lo siguiente:
Si su mypackage está configurado correctamente, enumerará todas sus dependencias, y si utilizó la descarga de pip para descargar la cascada de dependencias (es decir, dependencias de dependencias, etc.), todo funcionará.
Si desea utilizar el índice de pipi si es accesible, pero si no utiliza las ruedas locales, puede eliminarlo
--no-indexy agregarlo--retries 0. Verá la pausa de pip por un momento mientras intenta verificar que pypi no tenga una dependencia (una no instalada) y cuando encuentre que no puede alcanzarla, volverá a ser local. No parece haber una manera de decirle a pip que "busque primero los locales, luego el índice".fuente
He estado tratando de lograr algo realmente simple y fallé miserablemente, probablemente soy estúpido.
De todos modos, si tiene un script /
Dockerfileque descarga un archivo zip del paquete de Python (por ejemplo, desde GitHub) y luego desea instalarlo, puede usar elfile:///prefijo para instalarlo como se muestra en el siguiente ejemplo :NOTA : Sé que puede instalar el paquete de inmediato utilizando,
pip install https://example.com/mypackage.zippero en mi caso quería verificar la suma de comprobación (nunca lo suficientemente paranoico) y fallé miserablemente al tratar de usar las diversas opciones que proporciona pip / el#md5fragmento.Ha sido sorprendentemente frustrante hacer algo tan simple directamente con
pip. Solo quería pasar una suma de verificación ypipverificar que el zip coincidía antes de instalarlo.Probablemente estaba haciendo algo muy estúpido, pero al final me di por vencido y opté por esto. Espero que ayude a otros a intentar hacer algo similar.
fuente