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 .pypirc
avant 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?
Réponses:
Cela semble être un hack raisonnable et pas du tout sale.
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.
la source
Une possibilité serait de définir des variables d'environnement . Cela pourrait être fait avec des outils de déploiement comme Ansible . Stocker vos secrets avec la Blackbox de Stack Overflow ou le coffre-fort d'Ansible
Alternativement: la conteneurisation serait utile, car tout le nécessaire pour exécuter le logiciel est intégré.
la source
Soyez très prudent lorsque vous utilisez cette solution. Comme indiqué dans la documentation :
C'est à dire, vos informations d'identification seront distribuées dans le
.egg
. En fouillant dans lesetuptools
code source, j'ai découvert qu'en interne, il semble utiliser laeasy_install
commande pour installer les dépendances. Par conséquent, l'ajout de ce qui suit à vossetup.cfg
causes permet de récupérer un dépôt privé: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.
la source