python - librerias - ¿Cómo puedo hacer que setuptools instale un paquete de otra fuente que también esté disponible en pypi con el mismo número de versión?
install pip (2)
Creo que puedes usar dependency_links
como se describe en esa pregunta:
from setuptools import setup
setup(name = ''mypkg'',
version = ''0.0.1'',
description = ''Foo'',
author = ''bar'',
author_email = ''[email protected]'',
install_requires = [''pyScss==1.1.3''],
dependency_links = [
''https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3''
]
)
Probado usando python setup.py develop
Probablemente desee cambiar el nombre del huevo para enfatizar que es un tenedor http://www.python.org/dev/peps/pep-0386/
Fuera de setup.py puede imponer esto localmente utilizando Requirements.txt y pip
. Si bien esto no hará que su paquete dependa de la bifurcación, puede documentarlo fácilmente como la forma de instalación.
$ cat requirements.txt
https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3
$ pip install -r requirements.txt
Es una pregunta similar a ¿Cómo puedo hacer que setuptools instale un paquete que no está en PyPI? pero no es lo mismo.
Como me gustaría usar la versión bifurcada de algún paquete, setuptools ignora el enlace de dependencia (ya que tiene el mismo número de versión).
¿Hay alguna forma de forzar el uso del enlace desde los enlaces de dependencia? ¿O es la única forma de cambiar el número de versión en el repositorio bifurcado?
requires = [
...
''pyScss==1.1.3''
...
dependencies = [
''https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3''
]
Actualizar
Raro, aparentemente funciona si este paquete es el único en la lista requerida, que aún no está instalado. Si hay otro paquete faltante, lo descargará de pypi.
Terminé haciendo algo muy similar a la respuesta en .com/a/17442663/368102 .
Necesito un paquete github de requests-file
tenga un conflicto de nombres con un paquete de requests-file
diferente en PyPi. Ambos tienen una versión 1.0, y la versión PyPi tiene algunas versiones superiores.
La solución en mis ias_tools/setup.py
ve así:
setup(
...
install_requires=[
''requests-file<=99.99'',
],
dependency_links=[
''https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip#egg=requests-file-99.99''
]
)
En mi caso, estoy usando pip
así que también tuve que usar --process-dependency-links
:
% pip install --process-dependency-links ./ias_tools
You are using pip version 6.0.6, however version 6.1.1 is available.
You should consider upgrading via the ''pip install --upgrade pip'' command.
Processing ./ias_tools
DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.
Collecting requests-file<=99.99 (from ias-tools==0.1)
Downloading https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip
Requirement already satisfied (use --upgrade to upgrade): requests>=1.1.0 in ./venv/lib/python2.7/site-packages (from requests-file<=99.99->ias-tools==0.1)
Installing collected packages: ias-tools, requests-file
Running setup.py install for ias-tools
Running setup.py install for requests-file
Successfully installed ias-tools-0.1 requests-file-1.0
No estoy demasiado preocupado por el aviso de desaprobación, ya que se envió una solicitud de extracción a pip para desaprobar la desaprobación (después de una discusión al respecto ).