snowflake.connector.connect触发CryptographyDeprecationWarning咨询
问题根因
这个警告的触发逻辑和pyOpenSSL版本无直接关系,不需要反复重装/升级pyOpenSSL。
该提示是cryptography库的内置提醒:3.4.0~36.0.0版本区间的cryptography保留了临时的pyOpenSSL兼容回退路径,只要代码调用路径触发了这个回退逻辑,就会弹出该警告——而旧版本(2.6.x及更早)的snowflake-connector-python在建立SSL连接时,恰好会调用到这个已被标记为弃用的回退接口,因此哪怕已经把pyOpenSSL升到最新版,警告依然会出现。
可落地解决方案
按推荐优先级从高到低选择即可:
- 优先升级snowflake官方连接器到适配版本
这是最彻底的无副作用解决方案,snowflake在2.7.0及以上版本的连接器中已经完成了新cryptography API的适配,不会再触发该回退逻辑。直接执行升级命令:pip install --upgrade snowflake-connector-python
如果你用Anaconda管理环境(从你的报错路径看当前是conda环境),也可以用conda命令完成升级,会自动处理全链路依赖适配:conda install -c conda-forge snowflake-connector-python --update-deps
升级完成后执行pip show snowflake-connector-python确认版本号≥2.7.0即可,重新运行连接代码警告就会消失。 - 若项目依赖锁死无法升级连接器,固定cryptography到兼容版本
如果你因为其他依赖限制不能升级snowflake连接器,可以把cryptography固定到3.3.2版本——这个版本是最后一个未加入该回退警告、同时兼容旧版连接器和最新pyOpenSSL的稳定版:pip install cryptography==3.3.2 - 若以上两个版本调整都不能做,针对性过滤指定警告
这个警告本身不影响连接的正常功能,如果你不想调整依赖版本,可以在代码最开头(导入snowflake连接器之前)添加如下代码,仅屏蔽这一条特定警告,不会影响其他异常提示:import warnings from cryptography.utils import CryptographyDeprecationWarning # 仅过滤匹配pyOpenSSL回退提示的特定警告 warnings.filterwarnings( "ignore", category=CryptographyDeprecationWarning, message=r".*temporary pyOpenSSL fallback path.*" )
注意:不要直接全局屏蔽所有CryptographyDeprecationWarning类别的提示,否则会漏掉其他真实的依赖弃用提醒,后续版本升级时可能触发无感知的兼容性故障。
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

