Aller au contenu principal

Gérer les bibliothèques avec les commandes %conda (hérité)

important

Cette documentation a été retirée et pourrait ne pas être mise à jour. Les produits, services ou technologies mentionnés dans ce contenu ne sont plus pris en charge. Consultez les bibliothèques Python à l'échelle du Notebook.

important

%conda Les commandes sont obsolètes et ne sont prises en charge que pour Databricks Runtime 7.3 LTS ML. Databricks recommande d'utiliser %pip pour la gestion des bibliothèques limitées au Notebook. Si vous avez besoin de bibliothèques Python qui ne peuvent être installées qu'avec conda, vous pouvez utiliser des conteneurs Docker basés sur conda pour préinstaller les bibliothèques dont vous avez besoin.

Anaconda Inc. a mis à jour ses conditions d'utilisation pour les canaux anaconda.org en septembre 2020. Selon les nouvelles conditions d'utilisation, il se peut que vous ayez besoin d'une licence commerciale si vous vous basez sur l'empaquetage et la distribution d'Anaconda. Voir la FAQ d'Anaconda Commercial Edition pour plus d'informations. Votre utilisation des canaux de distribution Anaconda est régie par leurs conditions d'utilisation.

À la suite de ce changement, Databricks a supprimé la configuration du canal de distribution default pour le gestionnaire de packages Conda. Il s'agit d'une modification majeure.

Pour installer ou mettre à jour des packages à l'aide de la commande %conda, vous devez spécifier un canal de distribution à l'aide de -c. Vous devez également mettre à jour toutes les utilisations de %conda install et %sh conda install pour spécifier un canal de distribution à l'aide de -c. Si vous ne spécifiez pas de Canal de distribution, les commandes conda échoueront avec PackagesNotFoundError.

La commande %conda est équivalente à la commande conda et prend en charge la même API avec certaines restrictions mentionnées ci-dessous. Les sections suivantes contiennent des exemples sur la manière d'utiliser les commandes %conda pour gérer votre environnement. Pour plus d'informations sur l'installation de packages Python avec conda, consultez la documentation d'installation de conda.

Notez que les commandes magiques %conda ne sont pas disponibles sur Databricks Runtime. Elles ne sont disponibles que sur Databricks Runtime 7.3 LTS ML. Databricks recommande d'utiliser pip pour installer les bibliothèques. Pour plus d'informations, consultez Comprendre conda et pip.

Si vous devez utiliser les commandes %pip et %conda dans un notebook, consultez les interactions entre les commandes pip et conda.

remarque

Les conda commandes suivantes ne sont pas prises en charge lorsqu'elles sont utilisées avec %conda:

  • activate
  • create
  • init
  • run
  • env create
  • env remove

Installer une bibliothèque avec %conda

Python
%conda install matplotlib -c conda-forge

Désinstaller une bibliothèque avec %conda

Python
%conda uninstall matplotlib

Enregistrer et réutiliser ou partager un environnement

Lorsque vous dissociez un notebook d'un cluster, l'environnement n'est pas enregistré. Pour enregistrer un environnement afin que vous puissiez le réutiliser ultérieurement ou le partager avec quelqu'un d'autre, suivez ces étapes.

Databricks recommande que les environnements ne soient partagés qu’entre les clusters exécutant la même version de Databricks Runtime ML.

  1. Enregistrez l'environnement en tant que spécification conda YAML.

    Python
    %conda env export -f /dbfs/myenv.yml
  2. Importez le fichier vers un autre notebook à l'aide de conda env update.

    Python
    %conda env update -f /dbfs/myenv.yml

Lister l'environnement Python d'un Notebook

Pour afficher l'environnement Python associé à un notebook, utilisez %conda list:

Python
%conda list

Interactions entre les commandes pip et conda

Pour éviter les conflits, suivez ces directives lors de l'utilisation de pip ou conda pour installer des packages et des bibliothèques Python.

  • Les bibliothèques installées à l'aide de l'API des bibliothèques ou via l'interface utilisateur du cluster sont installées à l'aide de pip. Si des bibliothèques ont été installées à partir de l'API ou de l'interface utilisateur du cluster, vous devez utiliser uniquement %pip commandes lors de l'installation de bibliothèques propres aux Notebooks.
  • Si vous utilisez des bibliothèques à l'échelle du Notebook sur un cluster, les scripts d'initialisation exécutés sur ce cluster peuvent utiliser les commandes conda ou pip pour installer des bibliothèques. Cependant, si le script d'initialisation inclut des commandes pip, utilisez uniquement des commandes %pip dans les notebooks (pas %conda).
  • Il est préférable d'utiliser soit les commandes pip exclusivement, soit les commandes conda exclusivement. Si vous devez installer des packages en utilisant conda et d'autres en utilisant pip, exécutez d'abord les commandes conda, puis exécutez les commandes pip. Pour plus d'informations, consultez Utilisation de pip dans un environnement Conda.

Questions fréquemment posées (FAQ)

Comment les bibliothèques installées à partir de l'interface utilisateur/API du cluster interagissent-elles avec les bibliothèques délimitées aux Notebooks ?

Les bibliothèques installées depuis l'interface utilisateur du cluster ou l'API sont disponibles pour tous les Notebooks sur le cluster. Ces bibliothèques sont installées à l'aide de pip; par conséquent, si des bibliothèques sont installées à l'aide de l'interface utilisateur du cluster, utilisez uniquement les commandes %pip dans les Notebook.

Comment les bibliothèques installées à l’aide d’un script d’initialisation interagissent-elles avec les bibliothèques propres au notebook ?

Les bibliothèques installées à l'aide d'un script d'initialisation sont disponibles pour tous les Notebooks sur le cluster.

Si vous utilisez des bibliothèques étendues au Notebook sur un cluster exécutant Databricks Runtime ML, les scripts d'initialisation exécutés sur le cluster peuvent utiliser les commandes conda ou pip pour installer des bibliothèques. Cependant, si le script d'initialisation inclut pip commandes, alors utilisez uniquement %pip commandes dans les Notebooks.

Par exemple, cet extrait de code de Notebook génère un script qui installe des packages fast.ai sur tous les nœuds du cluster.

Python
dbutils.fs.put("dbfs:/home/myScripts/fast.ai", "conda install -c pytorch -c fastai fastai -y", True)

Puis-je utiliser les commandes %pip et %conda dans les notebooks de job ?

Oui.

Puis-je utiliser les commandes %pip et %conda dans des Notebooks R ou Scala ?

Oui, dans une cellule magique Python.

Puis-je utiliser %sh pip, !pip, ou pip? Quelle est la différence ?

%sh et ! exécute une commande shell dans un notebook ; le premier est une commande magique auxiliaire Databricks, tandis que le second est une fonctionnalité d'IPython. pip est un raccourci pour %pip lorsque l'automagic est activé, ce qui est le default dans les Notebooks Python de Databricks.

Sur Databricks Runtime 11,0 et versions supérieures, %pip, %sh pip et !pip installent tous une bibliothèque en tant que bibliothèque Python délimitée au notebook. Sur Databricks Runtime 10.4 LTS et versions antérieures, Databricks recommande d'utiliser uniquement %pip ou pip pour installer les bibliothèques propres aux Notebooks. Le comportement de %sh pip et !pip n'est pas cohérent dans Databricks Runtime 10,4 LTS et les versions antérieures.

Puis-je mettre à jour les packages R à l'aide des commandes %conda ?

Non.

Problèmes connus

  • Lorsque vous utilisez %conda env update pour mettre à jour un environnement de notebook, l'ordre d'installation des packages n'est pas garanti. Cela peut entraîner des problèmes pour le package horovod, qui exige que tensorflow et torch soient installés avant horovod afin d'utiliser horovod.tensorflow ou horovod.torch respectivement. Si cela se produit, désinstallez le package horovod et réinstallez-le après vous être assuré que les dépendances sont installées.
  • Sur Databricks Runtime 9.1 LTS, les bibliothèques à l'échelle du Notebook sont incompatibles avec les Jobs de streaming par batch. Databricks recommande d'utiliser les bibliothèques de clusters ou le noyau IPython à la place.