dbx Ubuntu 22.04 安装 dbx 0.8.19 指南
Ubuntu 22.04 安装 dbx 0.8.19 的完整指南:pip 直装、pipx、离线 wheel 三种方案逐一实测,沉淀缺 git、click 8.2 不兼容、pipx 缺 pkg_resources 三类真实故障排障实录,含版本选型、升级降级与卸载清理。
dbx Ubuntu 22.04 安装 dbx 0.8.19 指南
目标:在一台 Ubuntu 22.04 服务器上从零安装 dbx 0.8.19(Databricks Labs 出品的 Databricks 作业 CI/CD CLI),跑通
dbx --version、dbx init、dbx configure等本地验证,并沉淀安装过程中三类真实故障的排障实录。已在 Ubuntu 22.04(x86_64)+ Python 3.10.12 环境逐条实测通过(实测日期 2026-10-23)。
一、环境信息
本文所有命令与回显均在以下环境实测:
| 项目 | 值 |
|---|---|
| 操作系统 | Ubuntu 22.04(x86_64) |
| Python | 3.10.12(系统自带 python3) |
| pip | 22.0.2(apt 的 python3-pip 提供) |
| dbx 目标版本 | 0.8.19(PyPI 最新稳定版,2024-07-02 发布,查询日期 2026-10-23) |
| 关键依赖版本 | typer 0.7.0、click 8.1.8(需固定,原因见方案 A)、databricks-cli 0.17.8、databricks-sdk 0.156.0、mlflow-skinny 2.22.5、GitPython 3.2.1 |
| 网络 | 可访问 pypi.org 与 files.pythonhosted.org(在线方案);离线方案无需外网 |
💡 说明:dbx 是纯客户端 Python CLI,安装只在本机完成;部署目标 Databricks 工作区的连接属于使用阶段配置,见《dbx 0.8.19 配置参数详解》。
二、前置条件
安装前需要确认三件事:Python 版本、包管理器、以及 git 可执行文件。其中第三点最容易被忽略——dbx 依赖链中的 GitPython 在导入时会检查 git 可执行文件,没有 git 时所有 dbx 命令都会在启动瞬间报 ImportError(排障实录见方案 A 步骤 3)。
# 1. 确认 Python 版本(dbx 要求 >= 3.8,本文实测 3.10)
python3 --version
实测回显:
Python 3.10.12
# 2. 安装基础包:pip、venv、pipx 与 git(git 为必装项)
sudo apt-get update
sudo apt-get install -y python3-pip python3.10-venv pipx git
实测回显(节选):
Setting up python3-pip (22.0.2+dfsg-1ubuntu0.7) ...
Setting up python3.10-venv (3.10.12-1ubuntu1.3) ...
Setting up pipx (1.0.0-1) ...
Setting up git (1:2.34.1-1ubuntu1.15) ...
# 3. 逐项验证前置条件
git --version
pip3 --version
pipx --version
实测回显:
git version 2.34.1
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
1.0.0
⚠️ 注意:如果环境暂不具备 sudo 权限,至少要保证 git 在 PATH 中(用户态编译或静态二进制均可),否则方案 A/B 安装完成后 dbx 无法启动。
三、版本选型说明
dbx 已被官方弃用,版本选型的原则是「锁定 0.8.x 最新版、不再追新」:
| 版本 | 发布日期(PyPI 实查) | 说明 |
|---|---|---|
| 0.8.19 | 2024-07-02 | 最新稳定版,本文实测对象,推荐 |
| 0.8.18 | 2023-07-14 | 上一版,本文降级实测可用 |
| 0.8.14 | 2023-05-11 | 0.8.x 中期版本 |
| 0.8.0 | 2022-11-02 | 0.8 大版本起点(引入多环境部署文件等变更) |
| 0.7.6 | 2022-10-04 | 0.7 末版(旧版部署文件结构,老项目常见) |
选型结论:
- 新装一律用 0.8.19:它是终结版本,修复到 2024 年 7 月为止;与本文依赖组合(click 8.1.8)组合后可稳定运行。
- 不要追旧:0.6/0.7 的部署文件结构与 0.8 不兼容,除非要维护的存量项目本身就停在旧版。
- Python 版本:官方要求 Python >= 3.8;本文在 3.10.12 完整验证。3.12+ 未验证,不建议冒险(dbx 停更,无法跟进新解释器兼容性)。
四、安装方案 A:pip 直装(在线)
本方案用系统 pip 直接安装,步骤最少,适合个人开发机快速上手。核心风险点:pip 会给 dbx 配上当下最新的 click(8.5.x),而 dbx 锁定的 typer 0.7.0 与 click >= 8.2 不兼容,必须手工固定 click 8.1.8。
4.1 安装 dbx
sudo pip3 install dbx
实测回显(节选,完整输出约 40 行依赖解析):
Successfully built databricks-cli
Installing collected packages: text-unidecode, commonmark, zipp, watchdog, urllib3, tzdata, typing_extensions, tenacity, tabulate, sqlparse, smmap, six, shellingham, pyyaml, python-slugify, pygments, pycparser, pyasn1, protobuf, propcache, pathspec, packaging, oauthlib, MarkupSafe, idna, h11, frozenlist, colorama, cloudpickle, click, charset_normalizer, certifi, cachetools, binaryornot, attrs, async-timeout, annotated-doc, aiohappyeyeballs, uvicorn, typer, rich, requests, python-dateutil, pyjwt, pydantic, pyasn1-modules, opentelemetry-api, multidict, jinja2, importlib_metadata, gitdb, exceptiongroup, cffi, aiosignal, yarl, opentelemetry-semantic-conventions, gitpython, databricks-cli, cryptography, arrow, anyio, starlette, opentelemetry-sdk, google-auth, cookiecutter, aiohttp, fastapi, databricks-sdk, mlflow-skinny, dbx
Successfully installed MarkupSafe-3.0.4 ... click-8.5.0 ... databricks-cli-0.17.8 databricks-sdk-0.156.0 dbx-0.8.19 ... mlflow-skinny-2.22.5 ... typer-0.7.0 ...
注意回显中 click-8.5.0——这正是随后故障的根源。
4.2 故障实录一:缺 git 导致命令无法启动
安装完成直接运行任何 dbx 命令(此处以 dbx --version 为例),若系统没有 git 可执行文件:
dbx --version
实测回显(完整错误头):
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/git/__init__.py", line 296, in <module>
refresh()
File "/usr/local/lib/python3.10/dist-packages/git/__init__.py", line 287, in refresh
if not Git.refresh(path=path):
File "/usr/local/lib/python3.10/dist-packages/git/cmd.py", line 926, in refresh
raise ImportError(err)
ImportError: Bad git executable.
The git executable must be specified in one of the following ways:
- be included in your $PATH
- be set via $GIT_PYTHON_GIT_EXECUTABLE
- explicitly set via git.refresh(<full-path-to-git-executable>)
All git commands will error until this is rectified.
This initial message can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:
- quiet|q|silence|s|silent|none|n|0: for no message or exception
- warn|w|warning|log|l|1: for a warning message (logging level CRITICAL, displayed by default)
- error|e|exception|raise|r|2: for a raised exception
Example:
export GIT_PYTHON_REFRESH=quiet
定位与解决:GitPython 在导入时就探测 git 可执行文件;dbx 的 --branch-name、部署资产分支隔离等功能依赖它。安装 git 即修复:
sudo apt-get install -y git
git --version
实测回显:
git version 2.34.1
💡 若确实无法安装 git,可设置
GIT_PYTHON_REFRESH=quiet让 GitPython 跳过启动检查,但 dbx 涉及分支识别的部署功能会受影响,不推荐。
4.3 故障实录二:click 8.5 与 typer 0.7.0 不兼容
装好 git 后再次运行:
dbx --version
实测回显(报错主体,traceback 中段省略):
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /usr/local/bin/dbx:5 in <module> │
│ 5 from dbx.cli import entrypoint │
│ ...
│ /usr/local/lib/python3.10/dist-packages/dbx/cli.py:223 in <module> │
│ ❱ 223 click_app = get_click_app() │
│ ...
│ /usr/local/lib/python3.10/dist-packages/click/core.py:3163 in _validate │
╰──────────────────────────────────────────────────────────────────────────────╯
TypeError: Secondary flag is not valid for non-boolean flag.
定位与解决:dbx 0.8.19 依赖 typer==0.7.0(实测 pip3 show typer 为 0.7.0),而 typer 0.7.0 的参数构造方式在 click 8.2 起的严格校验下抛 TypeError: Secondary flag is not valid for non-boolean flag.。dbx 停更后无人适配,需把 click 降回 8.1.x:
sudo pip3 install 'click==8.1.8'
dbx --version
实测回显:
[dbx][2026-10-23 08:41:19.654] 🧱 Databricks eXtensions aka dbx, version ~> 0.8.19
4.4 验证
dbx --version
dbx --help
实测回显(--help 为节选):
Usage: dbx [OPTIONS] COMMAND [ARGS]...
🧱 Databricks eXtensions aka dbx. Please find the main docs page here.
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --version │
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy │
│ it or customize the installation. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ configure 🔧 Configures project environment in the current folder. │
│ deploy 📦 Deploy project to artifact storage. │
│ destroy 🚮 Delete defined workflows and relevant assets. │
│ execute 🔥 Executes chosen workload on the interactive cluster. │
│ init 💎 Generates new project from the template. │
│ launch 🚀 Launch the workflow on a job cluster. │
│ sync 🔄 Sync local files to Databricks and watch for changes. │
╰──────────────────────────────────────────────────────────────────────────────╯
五、安装方案 B:pipx 安装(推荐)
pipx 为每个工具建独立虚拟环境,不污染系统 Python,是 Python CLI 工具的推荐装法。除 click 之外,新版 pipx 还有一处独立故障:其创建的虚拟环境默认不含 setuptools,而 dbx 启动即 import pkg_resources,需手工注入旧版 setuptools。
5.1 安装
pipx install dbx
实测回显:
creating shared libraries...
upgrading shared libraries...
installing dbx...
⚠️ Note: dbx was already on your PATH at /usr/local/bin/dbx
⚠️ Note: '/root/.local/bin' is not on your PATH environment variable. These
apps will not be globally accessible until your PATH is updated. Run `pipx
ensurepath` to automatically add it, or manually modify your PATH in your
shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
installed package dbx 0.8.19, installed using Python 3.10.12
These apps are now globally available
- dbx
5.2 故障实录三:pipx 虚拟环境缺 pkg_resources
/root/.local/bin/dbx --version
实测回显(错误头):
Traceback (most recent call last):
File "/root/.local/bin/dbx", line 3, in <module>
from dbx.cli import entrypoint
File "/root/.local/pipx/venvs/dbx/lib/python3.10/site-packages/dbx/cli.py", line 6, in <module>
from dbx.commands.configure import configure
...
File "/root/.local/pipx/venvs/dbx/lib/python3.10/site-packages/dbx/constants.py", line 3, in <module>
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
定位与解决:dbx 的 constants.py 在模块加载期 import pkg_resources(setuptools 附属包)。新版 setuptools 已按官方计划移除 pkg_resources(其弃用公告标注 removal 最早 2025-11-30),因此向 pipx 虚拟环境注入「最新 setuptools」仍然无效,必须注入 81 之前的版本。dbx 0.8.19 的 pipx 完整修复共两条:
# 1. 注入带 pkg_resources 的旧版 setuptools
pipx runpip dbx install 'setuptools<81'
# 2. 固定 click 8.1.8(与方案 A 同因)
pipx runpip dbx install 'click==8.1.8'
# 3. PATH 持久化(若 ~/.local/bin 不在 PATH 中)
pipx ensurepath
5.3 验证
/root/.local/bin/dbx --version
实测回显:
/root/.local/pipx/venvs/dbx/lib/python3.10/site-packages/dbx/constants.py:3: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
import pkg_resources
[dbx][2026-10-23 08:41:19.654] 🧱 Databricks eXtensions aka dbx, version ~> 0.8.19
⚠️ 注意:首行 UserWarning 是 setuptools 的弃用提示,可忽略;dbx 功能不受影响。pipx list 应显示
package dbx 0.8.19:
pipx list
实测回显:
venvs are in /root/.local/pipx/venvs
apps are exposed on your $PATH at /root/.local/bin
package dbx 0.8.19, installed using Python 3.10.12
- dbx
六、安装方案 C:离线安装(内网隔离场景)
生产内网常无外网出口,可在任一联网机器上用 pip download 把 dbx 及全部依赖打成 wheel 包目录,再拷贝到内网服务器离线安装。click 8.1.8 一并在下载阶段固定,离线包即自洽。
6.1 联网侧:下载离线包
pip3 download dbx 'click==8.1.8' -d ./dbx-offline
实测回显(节选)与产物统计:
Saved ./dbx-offline/dbx-0.8.19-py3-none-any.whl
Saved ./dbx-offline/click-8.1.8-py3-none-any.whl
...
ls ./dbx-offline | wc -l
实测回显:
70
共 70 个 wheel 文件(含 dbx 本体、databricks-cli、mlflow-skinny 等),把整个 dbx-offline 目录拷贝到内网服务器(如 /opt/dbx-offline)。
6.2 内网侧:离线安装到虚拟环境
python3 -m venv /opt/dbx-venv
/opt/dbx-venv/bin/pip install --no-index --find-links /opt/dbx-offline dbx 'click==8.1.8'
实测回显(节选):
Looking in links: /opt/dbx-offline
...
Successfully installed ... dbx-0.8.19 ...
6.3 验证
/opt/dbx-venv/bin/dbx --version
实测回显:
[dbx][2026-10-23 08:51:12.444] 🧱 Databricks eXtensions aka dbx, version ~> 0.8.19
💡 说明:python3 -m venv 创建的虚拟环境自带 setuptools(含 pkg_resources),因此方案 C 无需方案 B 的 setuptools 注入步骤;click 固定则任何方案都需要。
七、方案对比与选择建议
| 维度 | A:pip 直装 | B:pipx(推荐) | C:离线 wheel |
|---|---|---|---|
| 隔离性 | 汇入系统/用户 Python,易与其他包冲突 | 独立虚拟环境,互不影响 | 独立虚拟环境 |
| 联网要求 | 安装时需外网 | 安装时需外网 | 仅打包机联网,内网服务器零外网 |
| 修复步骤 | 装 git + 固定 click 8.1.8 | 装 git + 固定 click + 注入 setuptools<81 | 装 git + 固定 click(venv 自带 setuptools) |
| 升级/多版本 | pip3 install dbx==<版本> | pipx upgrade/pipx install dbx==<版本> | 重建 wheel 目录 + venv |
| 适用对象 | 个人开发机、临时环境 | 长期使用的开发机(推荐) | 生产内网、隔离环境 |
选择建议:开发机优先 B(pipx),内网环境走 C;A 仅在临时验证或与系统 Python 深度绑定的场景使用。三条方案都必须落 click==8.1.8 固定,这是 dbx 0.8.19 在 2026 年安装的共同前提。
八、配置说明
安装只是第一步,dbx 的配置分三层,详细字段见《dbx 0.8.19 配置参数详解》,此处给出装完即用的最小配置:
- 认证配置(按优先级):
# 方式一:环境变量(CI/CD 推荐)
export DATABRICKS_HOST="https://adb-<org-id>.<region-id>.azuredatabricks.net"
export DATABRICKS_TOKEN="dapi<你的访问令牌>"
# 方式二:databricks-cli profile 文件 ~/.databrickscfg(本地开发常用)
cat > ~/.databrickscfg <<'EOF'
[DEFAULT]
host = https://adb-<org-id>.<region-id>.azuredatabricks.net
token = dapi<你的访问令牌>
EOF
chmod 600 ~/.databrickscfg
-
项目配置:进入项目目录后由
.dbx/project.json与conf/deployment.yml承担,可用dbx configure命令生成或修改。 -
shell 补全(可选):
dbx --install-completion
⚠️ 注意:
~/.databrickscfg内含访问令牌,务必chmod 600,不要提交进代码仓库(dbx init 生成的 .gitignore 已包含 .env 类文件,但不含 databrickscfg)。
九、升级、降级与多版本管理
dbx 停更后不存在「升级」,主要是版本回退与并存管理,以下均实测:
# 降级到指定版本(0.8.18)
sudo pip3 install dbx==0.8.18
dbx --version
实测回显:
[dbx][2026-10-23 08:52:11.172] 🧱 Databricks eXtensions aka dbx, version ~> 0.8.18
# 回到 0.8.19(同时带上 click 固定)
sudo pip3 install dbx==0.8.19 'click==8.1.8'
dbx --version
实测回显:
[dbx][2026-10-23 08:52:14.539] 🧱 Databricks eXtensions aka dbx, version ~> 0.8.19
多版本并存建议用虚拟环境:每个 venv 装一个 dbx 版本(如 /opt/dbx-0.8.18-venv、/opt/dbx-0.8.19-venv),按需激活;pipx 也可 pipx install dbx==0.8.18 后用 pipx list 管理,但同名工具 pipx 默认只保留一个安装实例。
十、常见问题
Q1:运行任何 dbx 命令都报 ImportError: Bad git executable.?
GitPython 导入期检查 git 可执行文件失败。安装 git:sudo apt-get install -y git;确实无法安装时设 export GIT_PYTHON_REFRESH=quiet,但分支识别相关功能会受影响(见 4.2 实录)。
Q2:报 TypeError: Secondary flag is not valid for non-boolean flag.?
click >= 8.2 与 dbx 锁定的 typer 0.7.0 不兼容。固定旧版:pip3 install 'click==8.1.8'(pipx 用 pipx runpip dbx install 'click==8.1.8')(见 4.3 实录)。
Q3:报 ModuleNotFoundError: No module named 'pkg_resources'?
运行环境缺 setuptools(或 setuptools 过新已移除 pkg_resources)。venv 内:pip install 'setuptools<81';pipx 内:pipx runpip dbx install 'setuptools<81'(见 5.2 实录)。
Q4:pipx 装完提示 dbx 不在 PATH?
执行 pipx ensurepath 并重开 shell,把 ~/.local/bin 加入 PATH(见 5.1 回显中的 pipx 提示)。
Q5:pip 输出 Running pip as the 'root' user ... 警告?
这是 pip 对 root 直装的常规提醒,不影响功能;介意者改用方案 B/C 的虚拟环境安装。
Q6:dbx deploy 报 No valid authentication information was provided.?
安装验证已通过,进入使用阶段但未配置凭据。按第八节配置 DATABRICKS_HOST/DATABRICKS_TOKEN 或 ~/.databrickscfg,详见《dbx 0.8.19 配置参数详解》。
Q7:dbx sync 报 Could not find a databricks-cli config for profile DEFAULT?
sync 命令族不走环境变量认证,读取的是 ~/.databrickscfg profile;创建该文件并填入 [DEFAULT] 段即可(见《dbx 0.8.19 常用 CLI 命令详解》sync 一节)。
十一、卸载与清理
按安装方式对应卸载,均实测:
# 卸载 dbx 本体(方案 A)
sudo pip3 uninstall dbx -y
实测回显:
Found existing installation: dbx 0.8.19
Uninstalling dbx-0.8.19:
Successfully uninstalled dbx-0.8.19
# 方式 B:pipx 卸载(连同虚拟环境)
pipx uninstall dbx
# 方式 C:直接删除虚拟环境与离线包目录
rm -rf /opt/dbx-venv /opt/dbx-offline
# 清理认证文件(如不再使用)
rm -f ~/.databrickscfg
卸载后验证:
which dbx || echo 'dbx 已卸载'
实测回显(venv 场景卸载后):
bash: /lab/dbx-offline-venv/bin/dbx: No such file or directory
依赖残留(databricks-cli、mlflow-skinny 等)如需一并清理,可 sudo pip3 uninstall databricks-cli databricks-sdk mlflow-skinny -y,或保留不影响其他工具。
十二、参考链接
- PyPI 项目页(版本与依赖元数据):https://pypi.org/project/dbx/
- GitHub 仓库(含弃用声明):https://github.com/databrickslabs/dbx
- Databricks 官方文档 dbx 归档章节:https://docs.databricks.com/en/archive/dev-tools/dbx/dbx.html
- pipx 官方文档:https://pypa.github.io/pipx/
- setuptools pkg_resources 弃用公告:https://setuptools.pypa.io/en/latest/pkg_resources.html
本系列其余篇目:《dbx 介绍与选型指南》《dbx 0.8.19 配置参数详解》《dbx 0.8.19 常用 CLI 命令详解》。