Comment les liens de dépendance privés doivent-ils être traités dans setup.py


10

Au travail, nous utilisons un serveur pypi privé. Ce serveur pypi est spécifié en tant que lien de dépendance:

...
from setuptools import setup

config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
    'https://{}:{}@<private_url>'.format(
        config.get('dc', 'username'), config.get('dc', 'password'))]

setup(
    dependency_links=dependency_links,
    ...)

Cela fonctionne très bien dans la plupart de nos cas. Cependant, il y a quelque temps, nous avons dû installer des packages sur un serveur client. Pour cela, nous avons dû copier sur un valide .pypircavant de pouvoir installer des packages.

De plus, le code ci-dessus ressemble à un hack sale.

Quelle est la bonne façon de spécifier des liens de dépendance sécurisés sans informations d'identification en dur?


1
Je vois ce que tu veux dire. Ce n'est pas que sale d'un hack, mais cela signifie que vous êtes couplage authentification avec la gestion de la dépendance sur une base par paquet. Cette approche n'est ni portable ni évolutive.
Joel Cornett

Réponses:


1

Cela semble être un hack raisonnable et pas du tout sale.

  1. Il existe un fichier de configuration pour les informations d'identification
  2. Il existe un moyen d'injecter l'URL personnalisée + les crédits dans les dépendances

Le travail est fait et bien fait, la seule façon d'améliorer cela est de le documenter et de l'essayer sur plusieurs configurations différentes ou avec plusieurs serveurs pypi et de résoudre les problèmes qui en découlent.



0

Soyez très prudent lorsque vous utilisez cette solution. Comme indiqué dans la documentation :

Ils seront également écrits dans les métadonnées de l'oeuf pour être utilisés par des outils comme EasyInstall à utiliser lors de l'installation d'un fichier .egg.

C'est à dire, vos informations d'identification seront distribuées dans le .egg. En fouillant dans le setuptoolscode source, j'ai découvert qu'en interne, il semble utiliser la easy_installcommande pour installer les dépendances. Par conséquent, l'ajout de ce qui suit à vos setup.cfgcauses permet de récupérer un dépôt privé:

[easy_install]
index_url=https://username:password@your.repo/simple

Cela a toujours le snafu que vos informations d'identification sont imprimées sur le terminal lors de son installation, mais au moins elles ne se retrouvent pas dans votre distribution. Notez que cette solution remplace votre URL d'index, donc votre dépôt privé doit également refléter celui public. Je n'ai vu aucune prise en charge pour l' ajout d' URL d'index d'une manière évidente.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.