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:
- Use um arquivo
requirements.txtpara especificar o pacote Python instalado compip. Consulte Definir dependências do Python compip. - Use um arquivo
pyproject.tomlpara especificar o pacote Python instalado comuv. Consulte Definir dependências do Python comuv. - Use um arquivo
package.jsonpara especificar o pacote Node.js Consulte Definir dependências do Node.js.
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.txtexistir, o aplicativo usapippara instalar dependências, independentemente depyproject.tomltambém estar presente.requirements.txtsempre tem precedência. - Se
requirements.txtnão existir e ambospyproject.tomleuv.lockexistirem, o aplicativo usauvpara 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:
[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:
{
"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"
}
}
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.txtajuda a manter o comportamento consistente do aplicativo em todas as implantações. - Ao usar
uv, inclua um arquivouv.lockpara 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:
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 :
- Adicione o volume do Unity Catalog como um recurso ao seu aplicativo. Veja o volumeUnity Catalog.
- 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
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.