it-swarm.com.de

Wie kann ich mein eigenes privates Conda-Repository hosten?

Ich habe ein paar Python-Projekte, die voneinander abhängig sind. Ich habe unterschiedliche Release-Versionen für jedes Projekt, und verschiedene Projekte hängen möglicherweise von verschiedenen Release-Versionen eines bestimmten Projekts ab. Ich möchte ein eigenes Conda-Repository auf einem internen Server erstellen, auf dem ich die Freigaben dieser Projekte als Conda-Pakete pushen kann und die anderen Projekte die erforderliche Version von dort installieren können. Ist das möglich? Wenn das so ist, wie?

20
Nefarious

Sie können einen conda benutzerdefinierten Kanal als privates Repo verwenden. Die wesentlichen Schritte sind die Verwendung von "conda build", um ein Condapaket zu erstellen, dieses Paket dann in Ihren benutzerdefinierten Kanal (ein Verzeichnis) zu kopieren und nun den Conda-Index für dieses Verzeichnis auszuführen. Sie können dann Pakete von diesem Kanal aus installieren, indem Sie "conda install -c" verwenden.

Ein Beispiel, genauer, nehmen wir an, linux-64:

  • Erstellen Sie den Kanal:
    mkdir -p /tmp/my-conda-channel/linux-64
  • Nehmen wir an, Sie haben ein Projekt namens "abc" mit einer meta.yaml und build.sh mit einer Version X. Nun bauen Sie es:

    conda build abc

  • Dadurch wird eine tar.bz2-Datei in Ihrem conda-bld-Verzeichnis erstellt. Zum Beispiel: ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2. Kopieren Sie diese Datei in Ihren Kanal:

    cp ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2 /tmp/my-conda-channel/linux-64/

  • Jetzt indexiere es:

    conda index /tmp/my-conda-channel/linux-64/

Sie haben dieses Paket jetzt in Ihren benutzerdefinierten Kanal hochgeladen. Sie können es in jeder Ihrer Conda-Umgebungen installieren, indem Sie Folgendes tun:

conda install -c file://tmp/my-conda-channel/ abc=X

Wenn Sie sich erinnern, das X ist die Version. Wenn Sie also weitere Versionen in Ihren Kanal eingefügt haben, können Sie bestimmte Versionen installieren.

Wenn Sie ein Projekt haben, das von der X-Version von "abc" abhängt, fügen wir es einfach zu diesem Projekt meta.yaml hinzu. Beispiel:

package:
  name: some-other-project
  version: 0.1
requirements:
  build:
   - abc X
...

Nachdem Sie diesen Kanal erstellt haben, ist es wahrscheinlich eine gute Idee, ihn zu Ihrer .condarc -Datei hinzuzufügen, damit er automatisch gesucht wird. Zum Beispiel:

channels:
- file://tmp/my-conda-channel/   
- defaults
29
Paul

Dazu gibt es zwei Teile: Wie wird der Kanal erstellt und wie wird er verwendet? Der zweite Teil ist am schwierigsten zu machen.

Der erste Teil ist in der conda Dokumentation ausführlich beschrieben. Sie können den Kanal direkt aus Dateien oder über einen statischen Webserver bedienen.

Um den Kanal zu verwenden, ist der -c file://tmp/my-conda-channel/ ein Ansatz. Aktuelle Conda-Versionen ermöglichen jedoch eine wesentlich bessere Lösung über custom channels, die wo (kürzlich?) Zu Conda hinzugefügt wurden.

Die Dokumentation ist über conda config --describe verfügbar, der diesen Teil enthält:

# custom_channels (map: str)
#   A map of key-value pairs where the key is a channel name and the value
#   is a channel location. Channels defined here override the default
#   'channel_alias' value. The channel name (key) is not included in the
#   channel location (value).  For example, to override the location of
#   the 'conda-forge' channel where the url to repodata is
#   https://anaconda-repo.dev/packages/conda-forge/linux-64/repodata.json,
#   add an entry 'conda-forge: https://anaconda-repo.dev/packages'.
#
# custom_channels: {}

Die Syntax für das Hinzufügen eines Kanals ist nicht dokumentiert, aber das Lesen der Quelle der korrekte Aufruf ist:

conda  --set custom_channels.my-conda-channel file://tmp/

(Hinweis: my-conda-channel/ ist nicht Teil des Pfads) . Nachdem Sie dies zu Ihrer Konfiguration hinzugefügt haben, können Sie jetzt Ihren eigenen Kanal auf dieselbe Weise wie conda-forge oder andere integrierte Kanäle verwenden:

conda install -c my-conda-channel my-cool-package

Für jeden in einer MS Windows-Einstellung ist der korrekte Satz von Schrägstrichen und umgekehrten Schrägstrichen für die Verwendung mit einer Windows-Freigabe file://\\SOMECORP\Corp\conda\channels\. Funktioniert einen Zauber.

0
Janus