urllib3的问题

  遇到问题不要歪,凡事都来找AI。
  于是我把问题贴给了chatGPT,它说:

  • 方法1 给urllib3降级,降到1.26.x,可我的就是1.26.16,pass
  • 方法2 更新HinetPy到最新版本,可人家都就是最新版本啊,pass
  • 方法3 手动patch,具体是将client.py中的
    1
    from urllib3.util import create_urllib3_context
      替换为
    1
    from ssl import create_default_context as create_urllib3_context
      看起来挺靠谱的。于是出现了这个问题
    1
    2
    3
    4
    5
    6
    7
    8
    9
      File "/home/junxie/work/Snet/HinetPy-main/HinetPy/client.py", line 139, in __init__
    self.login(user, password)
    File "/home/junxie/work/Snet/HinetPy-main/HinetPy/client.py", line 188, in login
    self.session.mount(self._HINET, AddedCipherAdapter())
    File "/home/junxie/.conda/envs/py3/lib/python3.9/site-packages/requests/adapters.py", line 155, in __init__
    self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block)
    File "/home/junxie/work/Snet/HinetPy-main/HinetPy/client.py", line 47, in init_poolmanager
    ctx = create_urllib3_context(ciphers=":HIGH:!DH:!aNULL")
    TypeError: create_default_context() got an unexpected keyword argument 'ciphers'
      然后,各种折腾一翻,删除,重装还是不行,看看模块create_urllib3_context
    1
    grep create_urllib3_context /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/*.py
      长这样:
    1
    2
    3
    4
    5
    6
    /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/proxy.py:from .ssl_ import create_urllib3_context, resolve_cert_reqs, resolve_ssl_version
    /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/proxy.py: ssl_context = create_urllib3_context(
    /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/ssl_.py:def create_urllib3_context(
    /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/ssl_.py: context = ssl_.create_urllib3_context()
    /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/ssl_.py: be created using :func:create_urllib3_context.
    /home/junxie/.conda/envs/py3/lib/python3.9/site-packages/urllib3/util/ssl_.py: context = create_urllib3_context(ssl_version, cert_reqs, ciphers=ciphers)
      表明urllib3安装是正确的。所以在client.py中,将这一句:
    1
    from urllib3.util import create_urllib3_context
      改为:
    1
    from urllib3.util.ssl_ import create_urllib3_context
      然后就万事大吉了。总结:不懂就问AI吧,但不好好学习和思考,到头来还是不懂。然而这又有什么关系,只要有AI在,会问AI问题就行了。没AI的话,那就拜拜了。