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 installen el directorio de origen?easy_installopipinstalarlo 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-linkscuando 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
betasufijo 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 requirementerror 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-linksha sido eliminado a partir depip19! 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
@tagle permite especificar una versión / etiqueta específica para verificar.#egg=namele 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.txtse 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.pycon el siguiente comando:setup.pytambién se puede instalar desde repositorios usando la misma sintaxis que la anterior, pero usando eldependency_linksvalor 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-linksestán programados para ser retirado enpip19,0 acuerdo con este comentario .pip18.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.pyparecerí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 installcompatible, 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.setupypip 19.1.1requirements.txt, sin embargo, no es compatible conpip install -r requirments.txtrequirments.txtse refiere?Vanilla
setuptoolsno 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
pipobuildoutque tenga una. Ver, por ejemplo: pip.openplans.org/#requirements-files