Gerenciar dependências para um aplicativo Databricks
Um aplicativo Databricks pode incluir dependências do Python, dependências do Node.js ou ambos. As dependências são declaradas em arquivos específicos da linguagem que a Databricks instala quando o aplicativo é implantado:
- Use um
requirements.txtarquivo para pacotes **Python** instaladospipcom. Consulte Defina as dependências do Python compip. - Use um
pyproject.tomlarquivo para pacotes **Python** instaladosuvcom. Consulte Defina as dependências do Python comuv. - Use um
package.jsonarquivo para pacotes **Node.js** instalados comnpmou.pnpmConsulte 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.
Aplicativos com dimensionamento horizontal (Beta) convertidos de aplicativos padrão podem dispensar as bibliotecas pré-instaladas e executar em uma imagem base de SO limpa, em vez disso. Consulte Recusar bibliotecas Python pré-instaladas para aplicativos Databricks.
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
pipaplicativos baseados em incluem as seguintes bibliotecas Python pré-instaladas. Não é necessário adicioná-los ao seu requirements.txt, a menos que uma versão diferente seja exigida.
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ência, defina as dependências do Python em um arquivo pyproject.toml em vez de requirements.txt. Aplicativos baseados em uvnão incluem bibliotecas pré-instaladas, portanto 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, diferentemente dos aplicativos baseados em pip, que usam o Python 3.11.
O mesmo se aplica a aplicativos com escalabilidade horizontal que optaram por não usar bibliotecas pré-instaladas. Consulte Desativar bibliotecas Python pré-instaladas para aplicativos Databricks.
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 bibliotecas Node.js, inclua um arquivo package.json na raiz do seu aplicativo. A Databricks oferece suporte tanto a npm quanto a pnpm, e seleciona o gerenciador de pacotes com base no arquivo de bloqueio que você incluir:
- Caso
pnpm-lock.yamlesteja presente, o aplicativo utilizapnpm. Consulte Usarpnpm. - Caso contrário, o aplicativo usa
npm. - Se ambos
pnpm-lock.yamlepackage-lock.jsonestiverem presentes,pnpmtem precedência.
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 a etapa de construção sob dependencies, não devDependencies. Se você definir NODE_ENV=production em suas variáveis de ambiente, o processo de implantação ignora a instalação de devDependencies.
Uso pnpm
Para criar com pnpm, inclua um arquivo pnpm-lock.yaml junto com seu package.json. Gere-o executando pnpm install localmente e inclua-o no diretório da sua aplicação. Databricks fornece pnpm por meio de Corepack.
Os seguintes requisitos devem ser observados para aplicativos pnpm:
- As dependências são instaladas com
pnpm install --frozen-lockfile, portantopnpm-lock.yamldevem permanecer sincronizadas compackage.json. Se houver desvio, a compilação falha em vez de atualizar o arquivo de bloqueio. É necessário regenerar o arquivo de bloqueio compnpm installapós a alteração das dependências. - Você deve especificar o comando de começar em
app.yaml. Ao contrário dos aplicativosnpm, os aplicativospnpmnão recorrem a um scriptstartdefault. Consulte Configurar a execução de aplicativos Databricks comapp.yaml.
Para projetos de pnpm workspace (onde há um arquivo pnpm-workspace.yaml), alguns comandos app.yaml são executados pnpm recursivamente. Por exemplo, uma etapa de compilação ou de início pode executar pnpm -r run build. Estes comandos devem chamar corepack pnpm em vez de pnpm para que os comandos aninhados sejam resolvidos corretamente.
Evite conflitos de versão
Siga estas diretrizes para evitar conflitos de versão:
- 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 verificar se as alterações na versão do pacote não introduzem 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
O Databricks instala bibliotecas definidas em requirements.txt, pyproject.toml e package.json diretamente no contêiner em execução em seu compute dedicado. É responsável por gerenciar e aplicar patches nessas 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áveis de ambiente não são compatíveis em requirements.txt. O caminho completo do arquivo wheel deve ser codificado.
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.