web-dev-qa-db-fra.com

Utiliser un extra python url d'index de package avec setup.py

Existe-t-il un moyen d'utiliser un index de package supplémentaire python (ala pip --extra-index-url pypi.example.org mypackage) avec setup.py pour que l'exécution de python setup.py install peut trouver les packages hébergés sur pypi.example.org?

32
Jeremy

Si vous êtes le responsable du package et que vous souhaitez héberger une ou plusieurs dépendances pour votre package ailleurs que PyPi, vous pouvez utiliser l'option dependency_links de setuptools dans votre distribution setup.py Fichier. Cela vous permet de fournir un emplacement explicite où votre colis peut être localisé.

Par exemple:

from setuptools import setup

setup(
    name='somepackage',
    install_requires=[
        'somedep'
    ],
    dependency_links=[
        'https://pypi.example.org/pypi/somedep/'
    ]
    # ...
)

Si vous hébergez votre propre serveur d'index, vous devrez fournir des liens vers les pages contenant les liens de téléchargement réels pour chaque œuf, pas la page répertoriant tous les packages (par exemple https://pypi.example.org/pypi/somedep/, Pas https://pypi.example.org/)

32

setuptools utilise easy_install sous le capot.

Il s'appuie sur setup.cfg ou ~/.pydistutils.cfg comme documenté ici .

Des chemins supplémentaires vers les packages peuvent être définis dans l'un de ces fichiers avec find_links . Vous pouvez remplacer l'url du registre avec index_url mais ne pouvez pas fournir une extra-index-url . Exemple ci-dessous inspiré des documents:

[easy_install]
find_links = http://mypackages.example.com/somedir/
             http://turbogears.org/download/
             http://peak.telecommunity.com/dist/
index-url = https://mypi.example.com
10
TomDotTom

Solution trouvée lors de l'utilisation de Dockerfile:

RUN cd flask-mongoengine-0.9.5 && \
    /bin/echo -e [easy_install]\\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple >> setup.cfg && \
    python setup.py install

Lequel /bin/echo -e [easy_install]\\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple affichera:

[easy_install]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
1
NOZUONOHIGH

Les éléments suivants ont fonctionné pour moi (développer, pas installer):

$ python setup.py develop --index-url https://x.com/n/r/pypi-proxy/simple

https://x.com/n/r/pypi-proxy/simple est un référentiel PyPI local.

0
miku