You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Google Kubernetes Engine上Python库不兼容问题

问题与错误日志

你的GKE Pod启动时报错,核心是依赖版本不兼容:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/env/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 135, in handle
    self.handle_request(listener, req, client, addr)
  File "/env/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 178, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/env/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 133, in __call__
    response = self.get_response(request)
  File "/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 130, in get_response
    response = self._middleware_chain(request)
  File "/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 152, in handle_uncaught_exception
    callback = resolver.resolve_error_handler(500)
  File "/env/lib/python3.7/site-packages/django/urls/resolvers.py", line 615, in resolve_error_handler
    callback = getattr(self.urlconf_module, 'handler%s' % view_type, None)
  File "/env/lib/python3.7/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/env/lib/python3.7/site-packages/django/urls/resolvers.py", line 595, in urlconf_module
    return import_module(self.urlconf_name)
  File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/vmagent/app/mysite/urls.py", line 38, in <module>
    re_path(r'^rosetta/', include('rosetta.urls'))
  File "/env/lib/python3.7/site-packages/django/urls/conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/env/lib/python3.7/site-packages/rosetta/urls.py", line 4, in <module>
    from . import views
  File "/env/lib/python3.7/site-packages/rosetta/views.py", line 30, in <module>
    from .translate_utils import TranslationException, translate
  File "/env/lib/python3.7/site-packages/rosetta/translate_utils.py", line 4, in <module>
    import requests
  File "/env/lib/python3.7/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/env/lib/python3.7/site-packages/urllib3/__init__.py", line 42, in <module>
    "urllib3 v2.0 only supports OpenSSL 1.1.1+, currently "
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2g  1 Mar 2016'. See: https://github.com/urllib3/urllib3/issues/2168
解决方法

核心矛盾是urllib3 v2.0要求OpenSSL 1.1.1+,但GKE Pod的基础环境用的是OpenSSL 1.0.2g,以下是不用大改现有配置的方案:

  • 锁定urllib3兼容版本:在项目的requirements.txt里添加一行urllib3<2.0,这样部署时会自动安装v2.0以下的版本,适配旧版OpenSSL。不用修改其他依赖或项目配置,仅需加这一行版本限制。
  • 更换基础镜像:如果不想限制urllib3版本,把Dockerfile里的基础镜像换成带有OpenSSL 1.1.1+的Python 3.7镜像,比如python:3.7-slim-buster。这个镜像的系统默认搭载OpenSSL 1.1.1,能满足urllib3 v2.0的要求,仅需替换镜像地址,无需改动项目代码或依赖配置。
  • 临时测试方案(不推荐生产用):设置环境变量URLLIB3_DISABLE_WARNINGS=1,但这只能屏蔽警告,无法解决导入错误,仅适合临时调试。

内容的提问来源于stack exchange,提问作者Kuth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:05:06