Pular para o conteúdo principal

Gerenciar dependências para um aplicativo Databricks

Cada aplicativo Databricks pode incluir dependências para Python, Node.js ou ambos. Você define essas dependências em arquivos específicos do idioma:

Defina as dependências do Python com pip

Os aplicativos que usam pip vêm com um conjunto de bibliotecas Python pré-instaladas. Para definir bibliotecas Python adicionais, use um arquivo requirements.txt . Se algum pacote listado corresponder a pacotes pré-instalados, as versões no seu arquivo substituirão as versões padrão.

Por exemplo:

# Override default version of dash
dash==2.10.0

# Add additional libraries not pre-installed
requests==2.31.0
numpy==1.24.3

# Specify a compatible version range
scikit-learn>=1.2.0,<1.3.0

Pré-instalado Python biblioteca

As seguintes bibliotecas Python estão pré-instaladas para aplicativos baseados em pip . Você não precisa incluí-los em seu requirements.txt a menos que precise de uma versão diferente.

Biblioteca

Versão

conector sql databricks-sql

3.4.0

databricks-sdk

0,33,0

malflow-skinny

2.16.2

rádio

4,44,0

simplificado

1.38,0

brilhante

1.1.0

traço

2.18.1

frasco

3.0.3

API rápida

0.115,0

uvicorn [padrão]

0,30,6

unicórnio

23,0,0

hub de rostos abraçados

0.35.3

dash-ag-grid

31,2,0

componentes do dash-mantine

0,14.4

componentes do dash-bootstrap

1.6.0

Plotly

5.24.1

reamostrador de plotagem

0.10.0

Defina as dependências do Python com uv

Se seu aplicativo usa uv para gerenciamento de dependências, defina as dependências do Python em um arquivo pyproject.toml em vez de requirements.txt. Bibliotecas pré-instaladas não estão disponíveis para aplicativos baseados em uv . Você deve declarar todas as dependências em seu pyproject.toml. Você também pode especificar qualquer versão do Python usando o campo requires-python , ao contrário dos aplicativos baseados em pipque usam o Python 3.11.

Durante a implantação, o Databricks Apps seleciona uma estratégia de instalação com base nos arquivos presentes:

  • Se requirements.txt existir, o aplicativo usa pip para instalar dependências, independentemente de pyproject.toml também estar presente. requirements.txt sempre tem precedência.
  • Se requirements.txt não existir e ambos pyproject.toml e uv.lock existirem, o aplicativo usa uv para instalar dependências do arquivo de bloqueio.

O instalador uv cria e gerencia seu próprio ambiente virtual, então você não precisa criar um diretório .venv .

O exemplo a seguir mostra um valor mínimo de pyproject.toml para um aplicativo Databricks:

Toml
[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
"dash==2.10.0",
"requests==2.31.0",
]

Para usar uv, você deve incluir um arquivo uv.lock junto com seu pyproject.toml. Gere-o executando uv lock localmente e inclua-o no diretório do seu aplicativo.

Definir dependências do Node.js

Para definir a Node.js biblioteca, inclua um arquivo package.json na raiz do seu aplicativo. Durante a implementação, o Databricks detecta esse arquivo e executa o npm install para instalar todas as dependências listadas nele.

Por exemplo, um arquivo package.json para um aplicativo React usando o Vite pode ter a seguinte aparência:

JSON
{
"name": "react-fastapi-app",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"build": "npm run build:frontend",
"build:frontend": "vite build frontend"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"typescript": "^5.0.0",
"vite": "^5.0.0",
"@vitejs/plugin-react": "^4.2.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0"
}
}
nota

Liste todos os pacotes necessários para npm run build em dependencies, não em devDependencies. Se o senhor definir NODE_ENV=production em sua variável de ambiente, o processo de implementação pulará a instalação de devDependencies.

Evite conflitos de versão

Lembre-se do seguinte ao definir dependências:

  • Para aplicativos baseados em pip , a substituição do pacote pré-instalado pode causar problemas de compatibilidade se a versão especificada diferir significativamente da pré-instalada.
  • Sempre teste seu aplicativo para garantir que as alterações na versão do pacote não introduzam erros.
  • Fixar versões explícitas em requirements.txt ajuda a manter o comportamento consistente do aplicativo em todas as implantações.
  • Ao usar uv, inclua um arquivo uv.lock para instalações totalmente reproduzíveis em todas as implantações.

Instalação e gerenciamento de dependências

A biblioteca definida em requirements.txt, pyproject.toml e package.json é instalada diretamente no contêiner em execução em seu compute dedicado. Você é responsável por gerenciar e corrigir essas dependências.

Você pode especificar bibliotecas de várias fontes em seus arquivos de dependência:

  • downloads de bibliotecas de repositórios públicos como PyPI e npm
  • Repositórios privados que autenticam usando credenciais armazenadas em segredos Databricks
  • biblioteca armazenada em seu diretório /Volumes/ (por exemplo, /Volumes/<catalog>/<schema>/<volume>/<path>)

Instalar a partir de repositórios privados

Para instalar pacote de um repositório privado, configure variável de ambiente para autenticação. Por exemplo, defina PIP_INDEX_URL para apontar para seu repositório privado:

YAML
env:
- name: PIP_INDEX_URL
valueFrom: my-pypi-secret

A configuração da rede do seu workspace deve permitir acesso ao repositório privado. Consulte Configurar rede para aplicativos Databricks.

Instalar arquivos wheel dos volumes do Unity Catalog

Para instalar o pacote Python a partir de arquivos wheel armazenados em volumes Unity Catalog :

  1. Adicione o volume do Unity Catalog como um recurso ao seu aplicativo. Veja o volumeUnity Catalog.
  2. Referencie o caminho completo do arquivo wheel diretamente em seu requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
nota

referências de variável de ambiente não são suportadas em requirements.txt. Você deve inserir o caminho completo do arquivo wheel diretamente no código.

Para aumentar a segurança ao acessar repositórios de pacotes externos, use controles de saída serverless para restringir o acesso a repositórios públicos e configurar redes privadas. Consulte Configurar rede para aplicativos Databricks.