Python 请求 RequestsDependencyWarning,它在重新安装相同版本的库后消失
Python requests RequestsDependencyWarning which disappears after re-installing the same version of the library
我正在使用 Docker 文件在 docker 容器中构建一个 python 环境。其中一个级别是 pip 安装一个 requirements.txt 文件,其中包括以下库:
chardet==3.0.4
requests==2.22.0
urllib3==1.25.6
镜像构建完成后,我创建了一个容器实例,运行其中包含以下内容:
python -c "import requests"
给出以下输出:
/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.6) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning)
很公平,但是如果我重新安装请求、pip install --upgrade requests --force-reinstall
和 运行 上面相同的 python 命令,我不会收到警告。
我可以在容器中再次检查每个库的版本,它们和以前完全一样:
chardet==3.0.4
requests==2.22.0
urllib3==1.25.6
那么为什么 requests
之前一直在发出错误,如果我的 Docker 图像中没有悬空的重新安装级别,我该如何确保这个警告不会出现在我的 Docker 图像中Docker文件?
在弹出警告时在我的代码中使用 requests
时,到目前为止我还没有发现任何不利影响,但是我宁愿它不存在,因为显然有什么东西触发了它。
我发现很多 posts/articles 建议坚持重新安装 requests
,但是我不希望 Docker 文件中有这个多余的步骤,除非它是解决警告的唯一方法。
有趣的是,重新安装 chardet
也会删除警告,但重新安装 urllib3
不会。
-- 编辑 --
Docker要求的文件:
FROM centos:7
# Install external yum repositories
RUN yum install -y \
epel-release \
https://repo.ius.io/ius-release-el7.rpm \
&& yum clean all
# Install required rpm dependencies
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python get-pip.py
RUN yum install -y \
systemd-python.x86_64 \
git222 \
gcc \
python2-devel \
openldap-devel \
python-perf \
python-linux-procfs \
python-schedutils \
policycoreutils-python \
python-slip \
python-slip-dbus \
&& yum clean all
# Install required pip dependencies
ADD requirements.txt /home/admin/container_files/
RUN pip install setuptools==30.1.0
RUN pip install -r /home/admin/container_files/requirements.txt
# Final update of packages
RUN yum update -y && yum clean all
解决方法是将文件中的安装重新排序为:
chardet==3.0.4
urllib3==1.25.6
requests==2.22.0
现在 python -c "import requests"
将从第一次开始工作
我建议你搬家:
RUN yum update -y && yum clean all
到第二行,如果您以后编辑一些代码,该行将被缓存。
我正在使用 Docker 文件在 docker 容器中构建一个 python 环境。其中一个级别是 pip 安装一个 requirements.txt 文件,其中包括以下库:
chardet==3.0.4
requests==2.22.0
urllib3==1.25.6
镜像构建完成后,我创建了一个容器实例,运行其中包含以下内容:
python -c "import requests"
给出以下输出:
/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.6) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning)
很公平,但是如果我重新安装请求、pip install --upgrade requests --force-reinstall
和 运行 上面相同的 python 命令,我不会收到警告。
我可以在容器中再次检查每个库的版本,它们和以前完全一样:
chardet==3.0.4
requests==2.22.0
urllib3==1.25.6
那么为什么 requests
之前一直在发出错误,如果我的 Docker 图像中没有悬空的重新安装级别,我该如何确保这个警告不会出现在我的 Docker 图像中Docker文件?
在弹出警告时在我的代码中使用 requests
时,到目前为止我还没有发现任何不利影响,但是我宁愿它不存在,因为显然有什么东西触发了它。
我发现很多 posts/articles 建议坚持重新安装 requests
,但是我不希望 Docker 文件中有这个多余的步骤,除非它是解决警告的唯一方法。
有趣的是,重新安装 chardet
也会删除警告,但重新安装 urllib3
不会。
-- 编辑 -- Docker要求的文件:
FROM centos:7
# Install external yum repositories
RUN yum install -y \
epel-release \
https://repo.ius.io/ius-release-el7.rpm \
&& yum clean all
# Install required rpm dependencies
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python get-pip.py
RUN yum install -y \
systemd-python.x86_64 \
git222 \
gcc \
python2-devel \
openldap-devel \
python-perf \
python-linux-procfs \
python-schedutils \
policycoreutils-python \
python-slip \
python-slip-dbus \
&& yum clean all
# Install required pip dependencies
ADD requirements.txt /home/admin/container_files/
RUN pip install setuptools==30.1.0
RUN pip install -r /home/admin/container_files/requirements.txt
# Final update of packages
RUN yum update -y && yum clean all
解决方法是将文件中的安装重新排序为:
chardet==3.0.4
urllib3==1.25.6
requests==2.22.0
现在 python -c "import requests"
将从第一次开始工作
我建议你搬家:
RUN yum update -y && yum clean all
到第二行,如果您以后编辑一些代码,该行将被缓存。