На работе мы используем частный сервер Pypi. Этот pypi-сервер указан в качестве ссылки зависимости:
...
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,
...)
Это прекрасно работает в большинстве наших случаев. Однако некоторое время назад нам пришлось устанавливать пакеты на клиентском сервере. Для этого нам пришлось скопировать действительный, .pypirc
прежде чем мы смогли установить какие-либо пакеты.
Также приведенный выше код выглядит как грязный хак.
Как правильно указать защищенные ссылки зависимостей без жесткого кодирования учетных данных?
Ответы:
Это похоже на разумный, а не грязный взлом на всех.
Работа выполняется и выполняется хорошо. Единственный способ сделать это лучше - документировать ее и опробовать на нескольких различных установках или на нескольких серверах pypi и решать возникающие из этого проблемы.
источник
Одной из возможностей будет установка переменных среды . Это можно сделать с помощью таких инструментов развертывания, как Ansible . Храните свои секреты с помощью Blackbox Stack Overflow или хранилища Ansible
В качестве альтернативы: может помочь контейнеризация, поскольку все необходимое для запуска программного обеспечения встроено.
источник
Будьте очень осторожны при использовании этого решения. Как указано в документации :
Т.е. ваши учетные данные будут распространяться в
.egg
. Просматриваяsetuptools
исходный код, я обнаружил, что внутренне он используетeasy_install
команду для установки зависимостей. Поэтому, добавив следующее к вашимsetup.cfg
причинам, вы получите частное хранилище:Это все еще имеет snafu, что ваши учетные данные печатаются в терминал при его установке, но по крайней мере они не попадают в ваш дистрибутив. Обратите внимание, что это решение заменяет ваш индексный URL, поэтому ваше частное хранилище также должно отражать общедоступный репо. Я не видел поддержки для добавления URL-адресов индекса очевидным образом.
источник