一、python3.11版本和numpy、pandas版本适配如下:
numpy 1.26.4:是 1.x 系列的最后一个稳定版本,对 Python 3.11 支持良好,且经过大量项目验证,极少出现崩溃。
pandas 2.2.3: 是 2.x 系列的长期支持版本,与 numpy 1.26.x 完全兼容,广泛用于生产环境。
二、现象和排查过程
执行main方法后,shell窗口的展示如下:
(.venv) PS D:\dmtcg\dmtcg\back_end> python .\main.py
(.venv) PS D:\dmtcg\dmtcg\back_end>
本项目是一个服务器项目。正常不会直接无打印无输出直接退出的。 但是没有任何错误打印和日志打印。
所以程序是在main函数之前就崩溃了。
-
检查服务所使用的端口8000是否被占用,结果发现没有被占用。
-
在main.py开头添加全局异常捕获,临时定位问题。
import sys
import traceback
def global_excepthook(exc_type, exc_value, exc_traceback):
traceback.print_exception(exc_type, exc_value, exc_traceback)
sys.exit(1)
sys.excepthook = global_excepthook
结果发现没有任何异常输出。
- 推测异常在导入语句模块。在相应的导入语句之前打印内容,定位问题。
print("import FastAPI")
from fastapi import FastAPI
print("import CORSMiddleware")
from fastapi.middleware.cors import CORSMiddleware
按照类似方法,递归的定位每一个导入。最终定位到是import pandas时,导致异常。
可能存在的问题:
- Microsoft Visual C++ Redistributable程序未启用。
- 磁盘空间不够
- pandas版本不兼容。
经过查看,Microsoft Visual C++ Redistributable已安装,磁盘空间也存在,则表示pandas版本可能不兼容。更换版本后正常运行了。
- 其他寻找错误的方法。
4.1 查看对应的日志
python -v -c "import pandas" 2> pandas_import.log
4.2 检查事件查看器。
如果windows错误弹窗未出现,可以查看 Windows 事件查看器中的应用程序错误日志:
- 按
Win + R,输入eventvwr.msc并回车。 - 展开“Windows 日志” → “应用程序”。
- 在右侧查找时间点与运行命令吻合的错误事件,来源可能是“Application Error”或“Python”。双击查看详细信息,其中会记录出错的模块路径和异常偏移量。
例如,错误信息可能显示 faulting module path: C:...\numpy\core_multiarray_umath.pyd,这提示 numpy 的 C 扩展模块崩溃。