python - para - install pip
¿Cómo puedo hacer que setuptools instale un paquete que no está en PyPI? (3)
Acabo de empezar 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 setuptools-compatible, es decir, tiene setup.py, etc. ¿Hay alguna manera de hacer que las herramientas de configuración descarguen e instalen la nueva versión en lugar de buscarla en PyPI e instalar la anterior?
FYI, el nuevo python-gearman es http://github.com/mtai/python-gearman
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 con solo mirar la URL lo que va a obtener.
Al cambiarlo a http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta lugar, 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:
setup(
...
dependency_links = [''http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta'']
)
Ahora, cuando se está instalando SU paquete, easy_install descubrirá que hay un "gearman 2.0.0beta" disponible para descargar desde esa URL, y felizmente lo elegirá sobre el de 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 PyPI de uno a la fuente descargable, en este caso, si el autor del paquete gearman hubiera incluido un enlace como el anterior, ya estarías configurado Por lo general, las personas marcan la versión de desarrollo con ''myproject-dev'' y luego las personas usan un requisito de ''myproject> = somever, == dev'', de modo que si no hay un paquete de alguna o más, easy_install intentará echa un vistazo o descarga el lanzamiento.)
Deberá especificar --process-dependency-links
cuando use pip
. Tenga en cuenta que el procesamiento de enlaces de dependencia ha quedado obsoleto y se eliminará en una versión futura.
Las setuptools
Vanilla no son compatibles con la descarga directamente desde un repositorio de git, pero puede usar uno de los enlaces de Descargar fuente desde esa página, como por ejemplo:
easy_install http://github.com/mtai/python-gearman/tarball/master
Puede usar el formato de instalación de pip install protocol+location[@tag][#egg=Dependency]
para instalarlo directamente desde la fuente usando pip.
Git
pip install git+https://github.com/username/repo.git
pip install git+https://github.com/username/repo.git@MyTag
pip install git+https://github.com/username/repo.git@MyTag#egg=ProjectName
Mercurial
pip install hg+https://hg.myproject.org/MyProject/
SVN
pip install svn+svn://svn.myproject.org/svn/MyProject
Bzr
pip install bzr+http://bzr.myproject.org/MyProject/trunk
Los siguientes protocolos son compatibles: [+git, +svn, +hg, +bzr]
Versiones
@tag
permite especificar una versión / etiqueta específica para verificar.
#egg=name
permite especificar lo que el proyecto es como una dependencia para los demás.
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@
):
git+ssh://[email protected]/username/my_private_repo
También puede instalar desde repositorios privados con un nombre de usuario / contraseña.
git+https://<username>:<password>@github.com/<user>/<repo>.git
Github proporciona la capacidad de crear tokens OAuth personales que se pueden reciclar
git+https://<oauth token>:[email protected]/<user>/<repo>.git
requisitos.txt
requirements.txt
se usa para especificar dependencias de proyectos:
requisitos.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
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:
requirements-docs.txt
sphinx
-r requirements-dev.txt
requisitos-dev.txt
some-dev-tool
-r requirements.txt
requisitos.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
setup.py
Los archivos de requisitos pueden instalar las dependencias especificadas en setup.py
con el siguiente comando:
-e .
setup.py
también puede instalar desde repositorios usando la misma sintaxis que antes, pero usando el valor de dependency_links
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