周五手贱升了个Python 3.14.5。
周末两天基本都在填坑。记录一下,给想升的朋友提个醒。
坑一:类型注解警告变报错了
这个最烦。
以前3.12上跑得好好的代码,3.14.5给你弹DeprecationWarning。量不大,但散落在项目各处,加起来四十多处。
3.12没事,3.14.5开始报警告
修起来不难,就是费时间。一个一个改呗,能咋办。
后来发现可以一次性暴露所有问题:
python -W error your_script.py
-W error会把warning当error处理,这样就不会漏了。建议升级前先跑一遍这个。
坑二:numpy炸了
pip install -r requirements.txt 完事之后跑项目,直接ImportError。
查了下是numpy版本问题。1.26.x跟3.14.5的ABI不兼容。
Python每次大版本升级ABI都会变,底层C扩展库基本都要跟着升。numpy、pandas、opencv这些全中招。
还不行就逐个指定最新版:
pip install numpy>=2.0 pandas>=2.0
我同事更惨,项目里有个pyodbc,作者两年没更新了。最后只能降回3.11。
所以升级前先确认下你的关键依赖是否支持3.14,特别是那些冷门库。
坑三:venv要重建
这个比较隐蔽。
系统Python换了之后,旧的venv有的能用有的不能用,行为不一致,很恶心。
表现就是各种奇怪的错误,比如:
Fatal Python error: init_fs_encoding: failed to get the Python codec name
别试图复用旧venv,直接重建:
我因为偷懒没重建,排查这个问题花了两个小时。
要不要升?
看情况吧。
新项目无所谓,从零开始没啥包袱。老项目的话看依赖多不多,C扩展多的建议再观望观望。
Stack Overflow 2025年的数据,72%的Python开发者还在用3.12及以下。大部分人态度就是——能用就不折腾。
不过3.14.5已经是第5个维护版了,稳定性还行。我自己是开发尝试了一下服务器没动,服务器炸了要写事故报告的,怂。
你们升级Python有翻车过吗?评论区交流一下 👇