Bei der Arbeit verwenden wir einen privaten Pypi-Server. Dieser Pypi-Server wird als Abhängigkeitslink angegeben:
...
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,
...)
Dies funktioniert in den meisten Fällen einwandfrei. Vor einiger Zeit mussten wir jedoch Pakete auf einem Client-Server installieren. Dazu mussten wir ein gültiges kopieren, .pypirc
bevor wir Pakete installieren konnten.
Auch der obige Code fühlt sich einfach wie ein schmutziger Hack an.
Was ist der richtige Weg, um gesicherte Abhängigkeitslinks ohne Hardcodierungsanmeldeinformationen anzugeben?
Antworten:
Dies scheint ein vernünftiger und überhaupt kein schmutziger Hack zu sein.
Die Arbeit wird erledigt und gut gemacht. Die einzige Möglichkeit, dies zu verbessern, besteht darin, sie zu dokumentieren und auf mehreren verschiedenen Setups oder mit mehreren Pypi-Servern auszuprobieren und die daraus resultierenden Probleme zu beheben.
quelle
Eine Möglichkeit wäre das Festlegen von Umgebungsvariablen . Dies könnte mit Bereitstellungstools wie Ansible erfolgen . Speichern Sie Ihre Geheimnisse mit Stack Overflow's Blackbox oder Ansible's Vault
Alternativ: Containerisierung würde helfen, da alles, was zum Ausführen der Software benötigt wird, eingebaut ist.
quelle
Seien Sie sehr vorsichtig, wenn Sie diese Lösung verwenden. Wie in der Dokumentation angegeben :
Dh Ihre Anmeldeinformationen werden in der verteilt
.egg
. Beim Rooten imsetuptools
Quellcode stellte ich fest, dass intern dereasy_install
Befehl zum Installieren von Abhängigkeiten verwendet wird. Wenn Sie also Folgendes zu Ihren hinzufügensetup.cfg
, wird ein privates Repo abgerufen:Dies hat immer noch die Snafu, dass Ihre Anmeldeinformationen bei der Installation auf dem Terminal gedruckt werden, aber zumindest landen sie nicht in Ihrer Distribution. Beachten Sie, dass diese Lösung ersetzt Ihre Index URL, so dass Ihre privaten Repo hat auch die Öffentlichkeit ein spiegeln. Ich habe keine Unterstützung für das Hinzufügen von Index-URLs auf offensichtliche Weise gesehen.
quelle