无法使requests.packages.urllib3工作

问题描述 投票:0回答:2

我在尝试使用 requests.packages.urllib3.exception 时遇到问题,但我不断收到“无法解决”的消息。

它曾经在另一个项目上工作,但我尝试将此项目与 PySide6 项目合并,但它不再工作了。

代码来自此模块:https://github.com/unistra/python-glpi-api

我尝试删除 python、所有 venv 并重新安装 python + 模块,但没有任何效果。 我是一名Python新手程序员,所以我的知识非常有限。

提前非常感谢您!

Code

python python-requests urllib3
2个回答
2
投票

我在顶部添加了导入

import urllib3
并将给我带来问题的行替换为:
from urllib3.exceptions import InsecureRequestWarning


0
投票

发生这种情况是因为 requests 正在做一些棘手的事情在运行时将 urllib3 包重新导出为 requests 的子包:

# This code exists for backwards compatibility reasons.
# I don't like it either. Just look the other way. :)

for package in ('urllib3', 'idna', 'chardet'):
    locals()[package] = __import__(package)
    # This traversal is apparently necessary such that the identities are
    # preserved (requests.packages.urllib3.* is urllib3.*)
    for mod in list(sys.modules):
        if mod == package or mod.startswith(package + '.'):
            sys.modules['requests.packages.' + mod] = sys.modules[mod]

因此

requests.packages.urllib3
并不存在于磁盘上,它只是 urllib3 的运行时别名,您的 IDE 和其他类型检查器将无法看到它,因为它们不运行代码,因此不会执行此 hack。

因此,直接从

urllib3
而不是
requests.packages.urllib3
导入将解决您发现的问题。

© www.soinside.com 2019 - 2024. All rights reserved.