Python-bibliotek begränsade till notebooken

Anteckningsboksspecifika bibliotek gör att du kan skapa, ändra, spara, återanvända och dela anpassade Python-miljöer som är specifika för en anteckningsbok. När du installerar ett bibliotek som är begränsat till notebooken är det bara den aktuella notebooken och eventuella jobb som är kopplade till den notebooken som kan komma åt biblioteket. Andra notebook-filer som är kopplade till samma kluster påverkas inte.

Bibliotek som är begränsade till anteckningsboken sparas inte mellan sessioner. Du måste installera om bibliotek som är kopplade till anteckningsboken i början av varje session, eller varje gång anteckningsboken frikopplas från ett kluster.

Databricks rekommenderar att du använder magikkommandot %pip för att installera Python-bibliotek som är begränsade till notebooken. På serverlösa notebookar som kör miljöversion 5 eller senare kan du också använda %uv pip för snabbare installationer.

Du kan använda %pip i anteckningsböcker som har schemalagts som jobb. Om du behöver hantera Python-miljön i en Scala-, SQL- eller R-notebook-fil använder du det %python magiska kommandot tillsammans med %pip.

Du kan uppleva ökad trafik till drivernoden när du arbetar med biblioteksinstallationer inom notebookens omfång. Se Storleksrekommendationer för drivrutinsnoder.

Om du vill installera bibliotek för alla notebook-filer som är anslutna till ett kluster använder du klusterbibliotek. Se även beräkningsspecifika bibliotek.

En omfattande översikt över tillgängliga alternativ för att installera Python-bibliotek i Databricks finns i Python-miljöhantering.

Hantera bibliotek med %pip kommandon

Kommandot %pip motsvarar pip-kommandot och stöder samma API. I följande avsnitt visas exempel på hur du kan använda %pip kommandon för att hantera din miljö. Mer information om hur du installerar Python-paket med pipfinns i pip-installationsdokumentationen och relaterade sidor.

Viktigt!

  • %pip-kommandon startar inte automatiskt om Python processen. Om du installerar ett nytt paket eller uppdaterar ett befintligt paket kan du behöva använda dbutils.library.restartPython() för att se de nya paketen. Se Starta om Python-processen i Azure Databricks.
  • Om du uppgraderar, ändrar eller avinstallerar python-kärnpaket (till exempel IPython) med %pip kan vissa funktioner sluta fungera som förväntat. Om du får sådana problem återställer du miljön genom att starta om klustret eller starta en ny session.

Snabbare installationer med %uv pip

Kommentar

%uv pip är endast tillgängligt på serverlösa notebookar som kör miljöversion 5 eller högre. Klassiska beräkningsmiljöer och tidigare versioner av serverlösa miljöer stöder inte %uv pip.

Det %uv pip magiska kommandot är ett snabbare alternativ till %pip. %uv pip drivs med uv-pakethanteraren och delar samma virtuella notebookmiljö som %pip, så paket som installeras med det ena verktyget är synliga även i det andra.

%uv pip är snabbare än %pip vid installationer och åtgärder som bara läser data, till exempel list. Detta gör den väl lämpad för iteration ovanpå en miljöspecifikation.

%uv pip stöder standardunderkommandona pip : install, uninstall, list, show, freeze, , checkoch tree.

%uv pip install simplejson
%uv pip list

Andra installationsmönster på den här sidan (volymer, arbetsytefiler, kravfiler, versionskontroll, privata lagringsplatser) fungerar med %uv pip. Du kan ersätta %pip med %uv pip i något av dessa exempel.

%uv pip Begränsningar

  • %uv pip uninstall kan inte helt ta bort bibliotek som är förinstallerade i den serverlösa miljön. Endast paketmetadata tas bort. De underliggande filerna finns kvar i filsystemet och paketet kan fortfarande importeras.
  • %uv pip söker inte efter beroendekonflikter mot förinstallerade bibliotek.
  • När du har kört %uv pip-kommandon kan anteckningsbokens sidopanel Miljö visa vissa förinstallerade bibliotek som användarinstallerade. Det här är ett visningsproblem och påverkar inte paketfunktionerna.
  • %uv pip är avsedd för snabb interaktiv iteration. För att konfigurera en reproducerbar miljö för anteckningsboken lägger du till beroenden i sidopanelen Environment.

Installera ett bibliotek med %pip

%pip install matplotlib

Installera ett Python-hjulpaket med %pip

%pip install /path/to/my_package.whl

Avinstallera ett bibliotek med %pip

Kommentar

Du kan inte avinstallera ett bibliotek som ingår i Databricks Runtime versionsinformation och kompatibilitet eller ett bibliotek som har installerats som ett klusterbibliotek. Om du har installerat en annan biblioteksversion än den som ingår i Databricks Runtime eller den som är installerad i klustret kan du använda %pip uninstall för att återställa biblioteket till standardversionen i Databricks Runtime eller den version som är installerad i klustret, men du kan inte använda ett %pip kommando för att avinstallera versionen av ett bibliotek som ingår i Databricks Runtime eller installeras i klustret.

%pip uninstall -y matplotlib

Alternativet -y krävs.

Installera ett bibliotek från ett versionskontrollsystem med %pip

%pip install git+https://github.com/databricks/databricks-cli

Du kan lägga till parametrar i URL:en för att ange saker som versionen eller git-underkatalogen. Mer information och exempel med andra versionskontrollsystem finns i VCS-stödet .

Installera ett privat paket med autentiseringsuppgifter som hanteras av Databricks-hemligheter med %pip

pip stöder installation av paket från privata källor med grundläggande autentisering, inklusive privata versionskontrollsystem och privata paketlagringsplatser, till exempel Nexus och Artifactory. Hemlig hantering är tillgängligt via Databricks Secrets-API:et, som gör att du kan lagra autentiseringstoken och lösenord. Använd DBUtils API för att få åtkomst till hemliga värden i din anteckningsbok. Observera att du kan använda $variables i magiska kommandon.

Om du vill installera ett paket från en privat lagringsplats anger du lagringsplatsens URL med --index-url alternativet till %pip install eller lägger till det i pip konfigurationsfilen på ~/.pip/pip.conf.

token = dbutils.secrets.get(scope="scope", key="key")
%pip install --index-url https://<user>:$token@<your-package-repository>.com/<path/to/repo> <package>==<version> --extra-index-url https://pypi.org/simple/

På samma sätt kan du använda hemlig hantering med magiska kommandon för att installera privata paket från versionskontrollsystem.

token = dbutils.secrets.get(scope="scope", key="key")
%pip install git+https://<user>:$token@<gitprovider>.com/<path/to/repo>

Installera ett paket från DBFS med %pip

Viktigt!

Alla arbetsyteanvändare kan ändra filer som lagras i DBFS. Azure Databricks rekommenderar att du lagrar filer på arbetsytor eller på Unity Catalog-volymer.

Du kan använda %pip för att installera ett privat paket som har sparats på DBFS.

När du laddar upp en fil till DBFS byter den automatiskt namn på filen och ersätter blanksteg, punkter och bindestreck med understreck. För Python-hjulfiler pip kräver det att namnet på filen använder perioder i versionen (till exempel 0.1.0) och bindestreck i stället för blanksteg eller understreck, så att dessa filnamn inte ändras.

%pip install /dbfs/mypackage-0.0.1-py3-none-any.whl

Installera ett paket från en volym med %pip

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Med Databricks Runtime 13.3 LTS och senare kan du använda %pip för att installera ett privat paket som har sparats på en volym.

När du laddar upp en fil till en volym byter den automatiskt namn på filen och ersätter blanksteg, punkter och bindestreck med understreck. För Python-hjulfiler pip kräver det att namnet på filen använder perioder i versionen (till exempel 0.1.0) och bindestreck i stället för blanksteg eller understreck, så att dessa filnamn inte ändras.

%pip install /Volumes/<catalog>/<schema>/<path-to-library>/mypackage-0.0.1-py3-none-any.whl

Installera ett paket som lagras som en arbetsytefil med %pip

Med Databricks Runtime 11.3 LTS och senare kan du använda %pip för att installera ett privat paket som har sparats som en arbetsytefil.

%pip install /Workspace/<path-to-whl-file>/mypackage-0.0.1-py3-none-any.whl

Spara bibliotek i en kravfil

%pip freeze > /Workspace/shared/prod_requirements.txt

Alla underkataloger i filsökvägen måste redan finnas. Om du kör %pip freeze > /Workspace/<new-directory>/requirements.txtmisslyckas kommandot om katalogen /Workspace/<new-directory> inte redan finns.

Använda en kravfil för att installera bibliotek

En kravfil innehåller en lista över paket som ska installeras med .pip Ett exempel på hur du använder en kravfil är:

%pip install -r /Workspace/shared/prod_requirements.txt

Se Requirements File Format för mer information om requirements.txt-filer.

Rekommendationer för drivrutinsnodstorlek

Användning av anteckningsboksspecifika bibliotek kan leda till mer trafik till drivernoden, eftersom den arbetar för att hålla miljön konsekvent mellan exekveringsnoderna.

När du använder ett kluster med 10 eller fler noder rekommenderar Databricks dessa specifikationer som ett minimikrav för drivrutinsnoden:

  • För ett processorkluster med 100 noder använder du Standard_D8ds_v5.
  • För ett GPU-kluster med 10 noder använder du Standard_NC12.

Använd en större drivrutinsnod för större kluster.

Skillnader mellan %pip, %sh pipoch !pip

%sh och ! kör ett shellkommando i en notebook; det förra är Databricks extra magiska kommando, medan det senare är en funktion i IPython. pip är en förkortning för %pip när automagic är aktiverat, vilket är standard i Azure Databricks Python Notebooks.

På Databricks Runtime 11.3 LTS och senare installerar %pip, %sh pip och !pip alla ett bibliotek som ett notebook-begränsat Python-bibliotek. På Databricks Runtime 10.4 LTS och tidigare rekommenderar Databricks att du endast använder %pip eller pip för att installera bibliotek som är begränsade till notebooken. Beteendet för %sh pip och !pip är inkonsekvent i Databricks Runtime 10.4 LTS och tidigare.

Kända problem

  • I Databricks Runtime 9.1 LTS är bibliotek som är begränsade till notebooken inte kompatibla med batchstreamingjobb. Databricks rekommenderar att du använder klusterbibliotek eller IPython-kerneln i stället.