一,报错信息:
$ uvicorn main:app --reload
Segmentation fault (core dumped)
二,原因:
测试:
请直接在终端运行以下原生 Python 脚本,不引入任何 FastAPI 或 Uvicorn 依赖:
$ python3 -c "import asyncio; asyncio.run(asyncio.sleep(0.1)); print('asyncio ok')"
Segmentation fault (core dumped)
直接输出 Segmentation fault:100% 确定是 /usr/local/soft/python312 这个自定义编译的 Python 解释器损坏了
(比如编译时未正确链接 pthread、libffi 或 C 编译器 GCC 版本过老)
导致问题的原因:
Python 3.12 编译参数中有一个极其关键的标志:
'--enable-shared'
这意味着你的 Python 解释器是以共享库模式(Shared Library)编译的,依赖系统目录中的 libpython3.12.so。
结合你之前的报错路径 /usr/local/soft/python312 和 /usr/lib/x86_64-linux-gnu,段错误的根源已经完全锁定:
核心病因:libpython3.12.so 动态库冲突 / 混淆
系统里同时存在两个不一致的 Python 3.12 环境:
-
系统预装/包管理器安装的 Python:位于
/usr/bin/python3.12,库路径在/usr/lib/x86_64-linux-gnu/。 -
手动放置/自定义的 Python:位于
/usr/local/soft/python312/。
三,解决:
重新编译安装python 3.12.3,去掉configure参数中的--enable-shared