gpt4 book ai didi

python - pip升级无法安装包

转载 作者:行者123 更新时间:2023-12-02 17:28:57 25 4
gpt4 key购买 nike

我已经跳了一段时间来解决这个问题,但我似乎无法让它工作。我有一个 docker 容器,我在其中设置了一个用于机器学习的 nvidia 镜像。我安装了所有 python 依赖项。然后我从 pip 包安装开始。我得到第一个错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: /packages/5e/c4/6c4fe722df5343c33226f0b4e0bb042e4dc13483228b4718baf286f86d87/certifi-2020.6.20-py2.py3-none-any.whl (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))
很简单,我有一个 certificate对付思科的保护伞。然后我可以轻松安装所有软件包。但是,为了能够安装最新的软件包,我需要升级 pip,并且升级工作正常。 pip升级到 20.2.3后突然又报错了:
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)) - skipping
然后我用谷歌搜索并尝试了我偶然发现的建议:
时间
我发现系统时间是错误的 - 它适用于初始 pip 版本,这很奇怪。然而,改变时间并没有解决这个问题。
session
我添加了 pip.conf带有受信任主机和认证的全局标签的文件。仍然存在相同的错误。
pip 安装
我尝试过使用不同的受信任主机标志以及证书标志,如果我理解正确的话,应该已经从 conf 文件中指定了它。然而,这两种方法都没有奏效。
怎么办
我现在有 pip 不知所措,在容器中安装证书允许我安装带有 pip 9.0.1 的软件包(系统默认)升级到 pip 20.2.3后.我无法让它与任何软件包一起使用。我已经尝试了多个 pip 版本 - 但是一旦我升级我就会丢失证书尝试重新安装它
ADD Cisco_Umbrella_Root_CA.cer /usr/local/share/ca-certificates/Cisco_Umbrella_Root_CA.crt
RUN chmod 644 /usr/local/share/ca-certificates/Cisco_Umbrella_Root_CA.crt
RUN update-ca-certificates --fresh
有人知道这是怎么发生的吗?
更新
卷发
 RUN curl -v -k -H"Host; files.pythonhosted.org" https://files.pythonhosted.org/packages/8a/fd/bbbc569f98f47813c50a116b539d97b3b17a86ac7a309f83b2022d26caf2/Pillow-6.2.2-cp36-cp36m-manylinux1_x86_64.whl
---> Running in ac095828b9ec
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying ::ffff:146.112.56.166...
* TCP_NODELAY set
* Connected to files.pythonhosted.org (::ffff:146.112.56.166) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [85 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [3177 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [262 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / AES256-GCM-SHA384
* ALPN, server did not agree to a protocol
从最后一行可以看出他们不同意协议(protocol),通信失败

最佳答案

前段时间我遇到了类似的问题。我的解决方案是在一个 docker 层中添加证书并安装依赖项。
我不知道你的 Dockerfile 看起来如何,但我会尝试这样的事情:

ADD Cisco_Umbrella_Root_CA.cer /usr/local/share/ca-certificates/Cisco_Umbrella_Root_CA.crt
RUN chmod 644 /usr/local/share/ca-certificates/Cisco_Umbrella_Root_CA.crt && \
update-ca-certificates --fresh && \
pip install --upgrade pip setuptools && \
pip install -r production.txt && \
rm /usr/local/share/ca-certificates/Cisco_Umbrella_Root_CA.crt # for extra safety
作为引用我做什么:
RUN mkdir -p -m 0600 ~/.ssh/ && \
ssh-keyscan <my host> >> ~/.ssh/known_hosts && \
eval `ssh-agent -s` && \
ssh-add <ssh key> && \
echo "Installing packages from pip. It might take a few minutes..." && \
pip install --upgrade pip setuptools && \
pip install -r production.txt && \
rm <ssh key>
其中 ssh key 已经是 chmod 400 <ssh key>从另一层。
另外,请确保
  • apt update
  • apt install -y ca-certificates
  • apt upgrade
  • 关于python - pip升级无法安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64274325/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com