Acabo de comenzar a trabajar con setuptools y virtualenv. Mi paquete requiere el último python-gearman que solo está disponible en GitHub. La versión python-gearman que está en PyPI es antigua. La fuente de Github es compatible con setuptools, es decir, tiene setup.py, etc. ¿Hay alguna forma de hacer que setuptools descargue e instale la nueva versión en lugar de buscarla en PyPI e instalar la anterior?
Para su información, el nuevo python-gearman es http://github.com/mtai/python-gearman
python
setuptools
distutils
pypi
andrei
fuente
fuente
python setup.py install
en el directorio de origen?easy_install
opip
instalarlo directamente desde Github. Pero también hay otra solución, ¿ha considerado agregar el paquete a PyPI?buildout
? Tiene un par de complementos Git listos para usar.Respuestas:
La clave es decirle a easy_install dónde se puede descargar el paquete. En este caso particular, se puede encontrar en la url http://github.com/mtai/python-gearman/tarball/master . Sin embargo, ese enlace por sí solo no funcionará, porque easy_install no puede decir simplemente mirando la URL lo que obtendrá.
Al cambiarlo a http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta , easy_install podrá identificar el nombre del paquete y su versión.
El último paso es agregar la URL a los enlaces de dependencia de su paquete, por ejemplo:
Ahora, cuando se instala SU paquete, easy_install descubrirá que hay un "gearman 2.0.0beta" disponible para descargar desde esa URL, y lo seleccionará con gusto sobre el que está en PyPI, si especifica "gearman> = 2.0.0beta" en tus dependencias ..
(Normalmente, la forma en que se hace este tipo de cosas es incluir un enlace en la página de PyPI a la fuente descargable; en este caso, si el autor del paquete gearman hubiera incluido un enlace como el anterior, ya estaría configurado Por lo general, las personas marcan la versión de desarrollo con 'myproject-dev' y luego usan un requisito de 'myproject> = somever, == dev', de modo que si no hay un paquete de somever o superior, easy_install intentará echa un vistazo o descarga la versión).
Tendrá que especificar
--process-dependency-links
cuando lo usepip
. Tenga en cuenta que el procesamiento de enlaces de dependencia ha quedado en desuso y se eliminará en una versión futura.fuente
beta
sufijo en una versión existente en PyPI, seguirá instalando el paquete desde PyPI en lugar del definido endependency_links
. Si intenta establecer una versión superior a la que existe en PyPI#egg=package-version
, la herramienta de configuración se quejará con unCould not find a version that satisfies the requirement
error y una lista de todas las versiones disponibles en PyPI. Tenga en cuenta que estoy tratando de construir mi paquete consdist
, luego instalarlo conpip install http://url/to/my/generated/tar
.easy_install http://url/to/my/generated/tar
, todo funciona como se esperaba ... ¿Alguna idea de por qué?--process-dependency-links
ha sido eliminado a partir depip
19! Ver: github.com/pypa/pip/issues/6162Puede usar el
pip install protocol+location[@tag][#egg=Dependency]
formato para instalar directamente desde la fuente usando pip.Git
Mercurial
SVN
Bzr
Se admiten los siguientes protocolos:
[+git, +svn, +hg, +bzr]
Versiones
@tag
le permite especificar una versión / etiqueta específica para verificar.#egg=name
le permite especificar cuál es el proyecto como una dependencia para otros.El orden siempre debe ser
@tag#egg=name
.Repositorios Privados
También puede instalar desde repositorios privados cambiando el protocolo a SSH (
ssh://
) y agregando un usuario apropiado (git@
):También puede instalar desde repositorios privados con un nombre de usuario / contraseña.
Github ofrece la capacidad de crear tokens personales de OAuth que se pueden reciclar
requerimientos.txt
requirements.txt
se usa para especificar dependencias del proyecto:requerimientos.txt
Estos no se instalan automáticamente con el paquete y deben instalarse con el comando
pip -r requirements.txt
.Incluyendo archivos de requisitos
Los archivos de requisitos pueden incluir otros archivos de requisitos:
require-docs.txt
require-dev.txt
requerimientos.txt
setup.py
Los archivos de requisitos pueden instalar dependencias especificadas
setup.py
con el siguiente comando:setup.py
también se puede instalar desde repositorios usando la misma sintaxis que la anterior, pero usando eldependency_links
valor como se menciona en esta respuesta .Referencias
https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html
fuente
extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
Como sólo tenía que hacer lo mismo, he encontrado otra manera de hacer esto como
pip
's--process-dependency-links
están programados para ser retirado enpip
19,0 acuerdo con este comentario .pip
18.1 incluye la siguiente característicaDe la descripción de PEP 508, la sintaxis para tales dependencias de URL se ve así:
Entonces en tu
setup.py
pareceríaTenga en cuenta que el enlace es un archivo de almacenamiento y también podría ser una versión o rama específica de un repositorio como se describe en esta respuesta . Además, vea esa respuesta para trabajar con otros hosts de repositorio.
Que yo sepa, la forma más fácil de actualizar la dependencia es mediante la
pip install -I .
instalación de su paquete desde su directorio.fuente
pip install
compatible, como las URL de git,#subdirectory=...
etc.? ¿O se les ocurrió una nueva sintaxis con diferentes características expuestas de una manera diferente e incompatible?distutils.core.setup
ypip 19.1.1
requirements.txt
, sin embargo, no es compatible conpip install -r requirments.txt
requirments.txt
se refiere?Vanilla
setuptools
no admite la descarga directa desde un repositorio de git, pero puede usar uno de los enlaces de Fuente de descarga de esa página, como:fuente
pip
obuildout
que tenga una. Ver, por ejemplo: pip.openplans.org/#requirements-files