升级 urllib3 使 cloud-init 失败,显然 urllib3 和 python 请求有版本兼容性问题?

upgrading urllib3 made cloud-init fail, apparently urllib3 and python requests have version compatibility issues?

我们将 python-urllib3 从 1.5-7 升级到 10.10.4-1,并在 Cloud-init 尝试获取 AWS 元数据时开始出现错误:

"unexpected error [cannot concatenate 'str' and 'tuple' objects]".

我已经看到其他几个 Whosebug 问题指出 urllib3 和请求之间的不兼容问题 (), ()。

我找不到的是 一起工作的版本矩阵。其他问题的解决方案我们无法使用,因为调用代码被埋在CloudInit中。

我们真的没有回到我们以前版本的 urllib3 的选项,因为其他包(ElasticSearch Curator)显然需要更新的版本。

Requests 通常会提供其 urllib3 依赖项,但下游打包程序倾向于将 requests 和 urllib3 分开。这意味着给定版本的 requests 不保证与 urllib3 的任何版本兼容,而不是它最初附带的版本。

您的 OS 版本中默认安装的任何版本都是 urllib3 的唯一版本,可以运行您的 OS 安装的请求版本。

如果您同时需要多个不同版本的 Python 库,我建议您查看 virtual environments