1. Ubuntu 下 pyparted 与 dmidecode 安装踩坑实录如果你在 Ubuntu 上做磁盘管理、硬件信息采集或者写自动化运维脚本大概率会碰到pyparted和dmidecode这两个名字。pyparted是 GNU Parted 的 Python 绑定能让你用 Python 代码直接操作分区表、创建删除分区、读取磁盘几何信息dmidecode则是读取 SMBIOS/DMI 表的标准工具能拿到主板型号、内存插槽、BIOS 版本、序列号这类底层硬件信息。两者一个管存储、一个管硬件清单经常被放在同一套环境初始化脚本里。问题在于这两个包的安装路径特别容易让人迷惑。pyparted在 PyPI 上有同名包dmidecode在 PyPI 上也有一个同名包很多人第一反应就是pip install pyparted、pip install dmidecode装完 import 一看报错说找不到libparted或者dmidecode模块里根本没有dmidecodeXML()这个方法。我试过在干净的 Ubuntu 22.04 上复现pip 装完确实能 import但一调用核心功能就崩因为 pip 那个包只是个薄封装真正的底层库和命令行工具它不会帮你装。这篇就按「先讲清楚什么时候用 apt-get、什么时候用 pip」这个主线把 pyparted 和 dmidecode 的安装、依赖检查、模块导入验证、硬件信息读取完整跑一遍。最后再演示一个实际场景把脚本里的 API endpoint 切到 TaoToken 之后怎么做连通性验证确保你的环境搭建和网络调用都是一次通过的。适合刚接触 Ubuntu 系统编程、或者被这两个包坑过的朋友。2. TaoToken 前置准备API Key 与 Base URL 怎么拿在讲安装之前先把后面验证环节要用到的 TaoToken 配置说清楚免得你装完包发现网络调用那步卡住。TaoToken 是一个兼容 OpenAI 接口规范的模型服务入口你可以把它理解成「把请求发到一个统一的 Base URL用一把 API Key 就能调用多种模型」。对于写运维脚本、做自动化 agent 的场景它省掉了你自己维护多套 endpoint 的麻烦。你需要准备两样东西API Key 和 Base URL。API Key 在控制台的 API Keys 页面创建地址是https://taotoken.net/api-keys登录后点创建复制那串sk-开头的字符串存到环境变量里别硬编码进脚本。Base URL 是https://taotoken.net/api注意这个地址不带任何查询参数直接作为 OpenAI SDK 的base_url使用。我建议用环境变量的方式管理这样脚本可以跨机器复用export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api如果你用的是 Claude Code 这类工具配置方式略有不同需要在 settings 里指定 Base URL 和 Key模型 ID 也要写全。后面第 3 节我会给出可复制的 JSON 配置片段。这里先记住一个原则Base URL、API Key、Model ID 这三件套必须同时正确缺一个就会报 401 或者 model not found。另外提醒一句TaoToken 的模型对话入口在https://taotoken.net/models你可以先在网页上确认你要用的模型 ID 拼写再写进配置。很多人 401 排查半天最后发现是模型名写错了。控制台地址是https://taotoken.net/consoleAPI Keys 管理在https://taotoken.net/api-keys文档在https://taotoken.net/doc这几个链接建议收藏。3. 可复制配置apt-get 与 pip 的取舍及完整命令这一节是核心直接给命令和判断逻辑。先说结论pyparted 用 apt-get 装dmidecode 也用 apt-get 装pip 只用来装那些纯 Python、不依赖系统库的辅助包。为什么因为 pyparted 依赖libparted这个 C 库pip 上的 pyparted 包在编译或运行时需要系统里已经有 libparted 和对应的开发头文件而 apt 的python3-parted包会自动把libparted2、python3-parted这些依赖一起拉齐。dmidecode 更直接它本质是个命令行工具pip 上那个同名包只是解析 dmidecode 输出的封装你不装系统级的dmidecode命令它就没有数据源可读。先更新索引并安装系统依赖sudo apt-get update sudo apt-get install -y python3-parted dmidecode parted libparted-dev这里python3-parted就是 pyparted 的 apt 包名注意不是pyparted。parted是命令行工具libparted-dev是开发头文件如果你后续要用 pip 装某些需要编译的包这个头文件能省掉一堆fatal error: parted.h: No such file的报错。dmidecode直接装系统包装完which dmidecode应该能看到/usr/sbin/dmidecode。装完验证一下python3 -c import parted; print(parted.__version__ if hasattr(parted,__version__) else parted ok) dmidecode --version如果import parted没报错说明 apt 路径走通了。这时候不要再去pip install pyparted否则 pip 的包可能覆盖掉 apt 装的版本导致 import 到错误的模块。如果你之前已经 pip 装过先卸掉pip uninstall -y pyparted dmidecode然后重新用 apt 装一遍。对于 dmidecodepip 那个包卸载后系统命令还在你的脚本改成subprocess调用dmidecode命令或者用python3-dmidecode这类 apt 包部分 Ubuntu 版本提供比 pip 那个残缺封装靠谱得多。接下来是 TaoToken 的配置片段。如果你用 OpenAI 兼容的 SDK配置写成这样{ base_url: https://taotoken.net/api, api_key: sk-你的key, model: claude-3-5-sonnet-20241022 }如果你用 Claude Codesettings 里对应的是{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key, ANTHROPIC_MODEL: claude-3-5-sonnet-20241022 } }注意 Claude Code 用的是ANTHROPIC_BASE_URL这个变量名别写成OPENAI_BASE_URL否则它会去连默认地址。Model ID 一定要写全claude-3-5-sonnet-20241022这种带日期的完整 ID 最稳。Cline 或者 MCP 类的工具配置里同样要填 Base URL、Key、Model ID 三件套缺一不可。4. 验证请求模块导入与硬件信息读取实测装完之后写一个完整的验证脚本把 pyparted 的分区读取、dmidecode 的硬件信息读取、以及 TaoToken 的连通性一次性跑通。先看 pyparted 部分import parted device parted.getDevice(/dev/sda) print(磁盘型号:, device.model) print(容量(字节):, device.length * device.sectorSize) disk parted.newDisk(device) print(分区表类型:, disk.type) for p in disk.partitions: print(分区:, p.path, p.geometry.start, p.geometry.end)这段代码在 apt 装的 pyparted 下能正常跑getDevice会调用底层 libparted。如果你之前 pip 装的那个包这里大概率报AttributeError或者libparted not found。跑通后你会看到磁盘型号和分区列表说明 pyparted 环境没问题。dmidecode 部分直接用 subprocess 调用系统命令最稳import subprocess out subprocess.check_output([sudo, dmidecode, -t, 1], textTrue) print(out)-t 1是读取系统信息类型输出里能看到制造商、产品名称、序列号。如果你要解析成结构化数据可以按行 split或者用dmidecode -t memory看内存插槽。注意 dmidecode 需要 root 权限脚本里加sudo或者用pkexec。之前 pip 那个dmidecodeXML()方法之所以报错就是因为 pip 包没有正确绑定系统命令换成 subprocess 调用就绕开了这个坑。最后是 TaoToken 连通性验证。用 curl 发一个最小请求curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet-20241022, messages: [{role: user, content: ping}], max_tokens: 10 }如果返回里有choices字段说明 Base URL、Key、Model ID 三件套都对了。如果返回 401检查 Key 有没有复制全如果返回 model not found去https://taotoken.net/models核对模型 ID如果连接超时检查你的网络能不能访问taotoken.net。这一步跑通你的环境搭建和网络调用就都验证完了。5. 本篇常见错排查401、libparted、choices 报错对照这一节把最容易撞上的几个报错列出来对照着改。报错一ImportError: libparted.so.2: cannot open shared object file。这是 pip 装 pyparted 的典型症状pip 包编译时链接了 libparted但运行时找不到库。解决pip uninstall pyparted然后sudo apt-get install python3-parted libparted-dev。装完ldconfig -p | grep parted确认库在。报错二AttributeError: module dmidecode has no attribute dmidecodeXML。pip 的 dmidecode 包没有这个方法它只是个解析器。解决pip uninstall dmidecode改用subprocess调用系统dmidecode命令或者装python3-dmidecode如果源里有。报错三TaoToken 返回 401 Unauthorized。检查三处API Key 是不是sk-开头且没多余空格请求头是不是Authorization: Bearer sk-xxxBase URL 是不是https://taotoken.net/api而不是带/v1的完整路径SDK 会自动拼/v1/chat/completions。如果手动 curl路径要写全https://taotoken.net/api/v1/chat/completions。报错四local proxy failed或连接被拒。这类通常是本地代理配置干扰检查http_proxy、https_proxy环境变量有没有指向一个不可用的地址unset掉再试。TaoToken 的地址是直连的不需要额外代理设置。报错五返回体里reading choices失败或者choices为空。先确认模型 ID 拼写claude-3-5-sonnet-20241022这种带日期的完整 ID 最稳再确认max_tokens没设成 0最后看返回的error字段里面通常有具体原因。报错六OAuth 相关报错。如果你用 Claude Code 且看到 OAuth 字样说明它还在走默认的登录流程没读到你的ANTHROPIC_BASE_URL。检查 settings 文件路径对不对环境变量有没有 export 到当前 shell重启终端再试。排查顺序建议先确认 apt 包装没装dpkg -l | grep parted再确认 import 路径python3 -c import parted; print(parted.__file__)最后确认网络三件套。大部分问题都出在 pip 和 apt 混用上记住 pyparted 和 dmidecode 都走 apt 就对了。6. 环境跑通后的下一步把验证脚本接进你的工作流环境搭好、连通性验证通过之后你可以把这个验证脚本固化成一个check_env.py每次换机器或者部署新环境时先跑一遍。脚本里把 pyparted 的磁盘读取、dmidecode 的硬件信息、TaoToken 的 ping 请求串起来任何一环失败就打印具体错误。这样比手动一条条敲命令快得多。如果你后续要做长期的编码任务或者 agent 自动化建议把 TaoToken 的 Coding Plan 用起来入口在https://taotoken.net/coding-plan它针对代码生成和长上下文场景做了优化配合 Claude Code 或者 Cline 这类工具能省掉不少 token 成本。接入文档在https://taotoken.net/doc里面有各语言 SDK 的完整示例遇到配置问题先翻文档比搜索引擎快。最后留一个实用技巧把TAOTOKEN_API_KEY和TAOTOKEN_BASE_URL写进~/.bashrc或者用direnv管理别写死在脚本里。这样你换 key 或者换环境的时候只改一处所有脚本自动生效。pyparted 和 dmidecode 的 apt 包也建议写进你的setup.sh新机器一条命令装齐省得每次重新踩坑。
阅读完成 · 觉得有帮助?