2017-08-21 2 views
2

Je voudrais créer un environnement de conda à partir d'un fichier .yaml sur une machine hors ligne (c'est-à-dire sans accès à Internet). Sur une machine en ligne, cela fonctionne parfaitement bien: conda env créer -f environment.yamlConda env from .yaml offline

Cependant, cela ne fonctionne pas sur une machine hors ligne car les paquets ne sont pas trouvés. Comment puis-je faire cela?

Si ce n'est pas possible, existe-t-il un autre moyen facile d'obtenir mon environnement complet de condos sur une machine hors ligne (y compris les paquets installés par conda et pip)? Parcourir les paquets un à un pour les installer à partir des fichiers .tar.bz2 fonctionne mais est assez lourd, donc je voudrais éviter cela.

+0

Si ce sont des paquets que conda récupère de PyPI? Une raison spéciale de ne pas utiliser le 'pip 'standard pour l'installation? – Anthon

+0

Salut, Merci pour la réponse! Je serais bien de les installer avec pip, mais je ne sais pas comment faire hors ligne sans passer par les paquets un par un. Je serais très reconnaissant pour tous les conseils à ce sujet. – lilaf

Répondre

1

Si vous pouvez utiliser pip pour installer les paquets, vous devriez jeter un oeil à devpi, en particulier à son serveur. devpi peut mettre en cache des paquets normalement installés à partir de PyPI, donc seulement à la première installation, il les récupère réellement. Vous devez configurer pip pour récupérer les paquets du serveur devpi.

Comme vous ne voulez pas la liste de tous les paquets et leurs dépendances à la main, vous devriez, sur une machine connectée à Internet:

  • installer le serveur devpi (je que l'exécution dans un récipient Docker)
  • exécuter l'installation
  • examiner le dépôt de devpi et rassemblé tous les tar la chose fichiers de là .tar.bz2 et .whl (vous pourriez être en mesure)

Sur la machine non connectée:

  • installer le serveur devpi et client
  • utiliser le client devpi pour télécharger tous les paquets que vous avez recueillis (en utilisant devpi upload) au serveur devpi
  • assurez-vous que vous avez pip configuré pour regarder le serveur devpi
  • exécuter pip, il va trouver tous les paquets sur le serveur local.

devpi a une petite courbe d'apprentissage, qui a déjà une valeur traversant en raison de la place de la vitesse et la possibilité d'installer des paquets privés (c.-à-pas transféré à PyPI) en tant que dépendance normale, simplement générer le paquet et le télécharger votre serveur devpi local.

+0

Merci pour la réponse! Cela semble assez intéressant mais je ne l'ai pas essayé car j'ai trouvé une solution plus simple qui fonctionne pour moi (voir réponse ci-dessous). Je suppose que votre solution est beaucoup plus stable et mieux généralisée, donc je vais quand même l'accepter. Je pourrais essayer à l'avenir comme une solution à long terme qui transfère à tous les projets. – lilaf

0

Je suppose que la solution de Anthon est assez bien au-dessus, mais juste au cas où tout le monde est intéressé par une solution facile qui a fonctionné pour moi:

j'ai créé un fichier .yaml spécifiant l'environnement en utilisant le fichier> export env Conda. yaml. Suivant les instructions sur http://support.esri.com/en/technical-article/000014951, j'ai automatiquement téléchargé tous les fichiers d'installation nécessaires pour les paquets installés par conda et créé un canal à partir des fichiers. Pour cela, j'ai juste adapté le code du lien ci-dessus pour travailler avec mon fichier .yaml au lieu du fichier de liste de condos qu'ils ont utilisé. En outre, j'ai automatiquement téléchargé les fichiers nécessaires pour les paquets installés par pip en bouclant à travers les entrées pip dans le fichier .yaml et en utilisant le téléchargement pip pour télécharger chacun d'eux. De plus, j'ai automatiquement créé des listes séparées d'exigences de conda et pip à partir du fichier .yaml.Ensuite, j'ai créé l'environnement en utilisant conda créer avec le drapeau hors ligne, le fichier avec les exigences de conda et mon canal personnalisé. Enfin, j'ai installé les exigences de pip en utilisant pip install avec le fichier de configuration pip et le dossier contenant les fichiers d'installation pip pour l'option --find-links.

Cela a fonctionné pour moi. Le seul problème est que vous ne pouvez télécharger des binaires avec le téléchargement de pip si vous avez besoin de spécifier un système d'exploitation différent de celui que vous utilisez, et pour certains paquets, aucun binaire n'est disponible. Cela a été bon pour moi maintenant que la machine cible a certaines caractéristiques mais pourrait être un problème à l'avenir, donc je prévois d'examiner la solution proposée par Anthon.

+0

Belle solution Illaf. Comment avez-vous modifié le fichier yaml? Avez-vous exécuté un script pour ajouter un préfixe d'URL à chaque dépendance? – EB88