¿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?

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 repository 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.

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 = 'bar@example.com', 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 instalarlo.

 $ cat requirements.txt https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3 $ pip install -r requirements.txt 

Terminé haciendo algo muy similar a la respuesta en stackoverflow.com/a/17442663/368102 .

Necesito un paquete github de requests-file tenga un conflicto de nombres con otro paquete de requests-file 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 ).