2012-06-14 14 views
22

È una domanda simile a How can I make setuptools install a package that's not on PyPI? ma non uguale.Come posso installare setuptools per installare un pacchetto da un'altra fonte disponibile anche su pypi con lo stesso numero di versione?

Come mi piacerebbe utilizzare la versione biforcuta di alcuni pacchetti, setuptools ignora il collegamento delle dipendenze (poiché ha lo stesso numero di versione).

C'è un modo per forzare l'utilizzo del collegamento da dependency_links? O è l'unico modo per cambiare il numero di versione nel repository biforcato?

requires = [ 
    ... 
    'pyScss==1.1.3' 
    ... 

dependencies = [ 
    'https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3' 
] 

Aggiornamento

Strano, a quanto pare funziona se questo pacchetto è l'unico nella lista richiesta, che non è ancora installato. Se c'è un altro pacchetto mancante lo scaricherà da pypi.

+0

@IlyaBaryshev, scusate ma uso solo la soluzione che descrivo nell'aggiornamento. installazione/aggiornamento di tutti i pacchetti, quindi disinstallare questo specifico e quindi è l'unico pacchetto mancante - in questo caso prenderà il link dalle dipendenze – roberkules

+1

Sto creando un pacchetto, quindi non è un'opzione. Sto pensando di distribuire tutte le dipendenze all'interno del mio pacchetto, mi sembra una sola opzione considerando il comportamento di btoudy setuptools. –

+0

Potrebbe essere una soluzione al tuo problema: http://stackoverflow.com/a/17442663/368102? – Heyl1

risposta

9

io credo che si può semplicemente utilizzare dependency_links come descritto in tale domanda:

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' 
     ] 
    ) 

testati utilizzando python setup.py develop

Probabilmente si desidera rinominare l'uovo per sottolineare che è una forchetta http://www.python.org/dev/peps/pep-0386/

Al di fuori di setup.py puoi applicarlo localmente usando requirements.txt e pip. Anche se questo non farà dipendere il tuo pacco dalla forcella, puoi facilmente documentarlo come il modo di installarlo.

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

in realtà è quello che sto facendo ... nella chiamata 'setup' ho passato' install_requires = requires' e 'dependency_links = dependencies'. che è fondamentalmente lo stesso codice del tuo. – roberkules

6

ho finito per fare qualcosa di molto simile alla risposta in stackoverflow.com/a/17442663/368102.

Ho bisogno di un pacchetto github requests-file che confligga con un diverso pacchetto requests-file in PyPi. Entrambi hanno una versione 1.0 e la versione PyPi ha alcune versioni superiori.

La soluzione a mio ias_tools/setup.py assomiglia a questo:

setup(
    ... 
    install_requires=[ 
     'requests-file<=99.99', 
    ], 
    dependency_links=[ 
     'https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip#egg=requests-file-99.99' 
    ] 
) 

Nel mio caso, sto usando pip così ho dovuto anche usare --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 

Io non sono troppo preoccupato circa l'avviso di ritiro, come a pull request was submitted to pip per deprecare la deprecazione (dopo un discussion about it).

+0

Il mio comando di build era 'pip install --upgrade -e.', e avevo anche bisogno di aggiungere' --process-dependency-links'. Grazie per aver incluso quella parte di informazioni. –

Problemi correlati