VSCode调试Minio Python代码时出现SSLError问题排查
示例代码
minio_client = Minio( endpoint="my.minio.com:10092", access_key="minio", secret_key="minio123!" ) buckets = minio_client.list_buckets() for bucket in buckets: print(bucket.name)
调试时的错误信息
File "C:\Path\to\Miniconda3\envs\minio\Lib\site-packages\urllib3\util\retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='my.minio.com', port=10092): Max retries exceeded with url: / (Caused by SSLError(FileNotFoundError(2, 'No such file or directory')))
排查背景
- 已确认Minio地址、凭证正确,可通过C# SDK及WebUI正常访问
- 同一Miniconda环境下,终端直接运行、PyCharm运行、VSCode非调试模式运行代码均正常,仅VSCode调试模式触发错误
问题原因分析
1. VSCode调试器的SSL证书环境变量被修改
VSCode调试模式启动Python进程时,会重置或修改部分环境变量,其中可能包括SSL_CERT_FILE、REQUESTS_CA_BUNDLE这类控制SSL证书加载路径的变量。这会导致urllib3(Minio SDK依赖的网络库)无法找到系统或Minio的SSL证书文件,进而触发FileNotFoundError。
2. VSCode Python扩展的调试配置干扰
如果你的launch.json中配置了自定义环境变量(env字段),或者启用了某些调试选项,可能间接干扰了SSL证书的加载逻辑。比如错误覆盖了证书路径相关的环境变量,或者调试器的进程上下文限制了文件访问权限。
3. 调试模式下的进程路径隔离
虽然使用的是同一个Miniconda环境,但VSCode调试器启动Python进程的工作目录或上下文可能与终端运行时不同。如果Minio使用了自定义SSL证书且通过相对路径配置,调试模式下的路径解析会出现问题,导致找不到证书文件。
内容的提问来源于stack exchange,提问作者Roland Deschain

