应先确认发行版再安装对应开发包:ubuntu/debian用sudo apt install python3-dev,centos/rhel等用sudo dnf install python3-devel;缺该包会导致python.h: no such file or directory编译错误。

直接装 python3-dev 就行,但得先确认你用的是哪个发行版——不同系统包名不同,硬套会报错“无法定位软件包”。
Ubuntu/Debian 系统:用 apt 装 python3-dev
这是最常见的情况。注意:python3-dev 是 Debian/Ubuntu 专用包名,它提供 C 头文件(Python.h 等)和静态库,供编译 Python 扩展(比如用 cffi、pycryptodome 或自己写 C extension)时链接使用。
- 运行
sudo apt update更新源索引(否则可能找不到包) - 执行
sudo apt install python3-dev;如果提示找不到,试试sudo apt install python3.11-dev(把3.11换成你系统里实际安装的 Python3 主版本号,可用python3 --version查) - 验证是否装上:检查
/usr/include/python3.x/Python.h是否存在(x 是你的小版本号,如3.11)
CentOS/RHEL/Rocky/AlmaLinux:装 python3-devel,不是 -dev
Red Hat 系家族统一用 -devel 后缀,python3-dev 在这些系统里根本不存在。装错会浪费时间查文档。
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
- 对于 RHEL8+ / CentOS8+ / Rocky9+:运行
sudo dnf install python3-devel - 对于 CentOS7 / RHEL7:用
sudo yum install python3-devel(注意不是python36-devel或python38-devel——除非你明确用了 SCL 或第三方仓库安装了非默认 Python) - 不确定当前默认 Python3 版本?执行
python3 --version,再查对应包名,例如python3.9-devel可能需启用额外仓库
为什么 pip install 时报 “Python.h: No such file or directory”?
这不是 pip 的问题,而是编译阶段缺头文件。典型场景包括:
- 运行
pip install cryptography或pip install psycopg2时卡在 building ‘_openssl’ extension - 错误信息里明确出现
fatal error: Python.h: No such file or directory - 你用的是源码编译安装的 Python(比如从官网 tarball 装的 3.11.9),但没装对应开发包 —— 这时系统级的
python3-dev或python3-devel通常不匹配,得回源码目录重新 make install,或手动指定--prefix并确保include/路径被编译器找到
装完还是找不到头文件?检查 PATH 和 pkg-config
即使包装成功,某些构建工具(如 meson、cmake)依赖 pkg-config python3 返回正确路径。如果它返回空或错误路径:
- 确认
pkg-config已安装:which pkg-config,没有就先装(apt install pkg-config或dnf install pkgconf) - 检查
python3.pc文件是否存在:find /usr -name python3.pc 2>/dev/null;若在/usr/lib64/pkgconfig/下,确保该路径已加入PKG_CONFIG_PATH - 临时修复:
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib64/pkgconfig"(路径按实际调整)
最容易被忽略的一点:源码编译安装的 Python,其 python3-dev 等价物就是解压目录里的 Include/ 子目录本身——它不会自动注册到系统 pkg-config 或头文件搜索路径中。这种情况下,不能依赖系统包管理器,得手动处理 include 和 lib 路径。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










