【问题标题】:twine upload fails when using a proxy server使用代理服务器时麻线上传失败
【发布时间】:2019-08-06 18:54:29
【问题描述】:

当涉及代理服务器时,我无法使用 twine 上传到 pypi

这就是我到目前为止所尝试的:

python -m twine upload -u USER -p PASSWORD dist/*

当我在我们公司的代理服务器后面时 twine 只是挂起,没有错误消息。 设置https_proxyhttp_proxy 环境变量也无济于事。

我们公司的代理服务器有自己的 CA 证书(我有 .cer 文件)。

那么我如何在代理服务器后面使用twine

使用pip,我可以通过将以下pip.ini 文件添加到%Appdata%\pip 来做到这一点:

[global]
proxy = proxy.company.com:8080
cert = C:\CA_Proxy.cer

【问题讨论】:

    标签: python-3.x pip http-proxy pypi twine


    【解决方案1】:

    在运行twine之前在命令提示符下设置HTTPS_PROXYTWINE_CERT环境变量解决问题:

    set HTTPS_PROXY=proxy.company.com:8080
    set TWINE_CERT=C:\CA_Proxy.pem
    
    python -m twine upload -u USER -p PASSWORD dist/*
    

    备注:确保证书为PEM(Base-64 编码的 X.509)格式。

    查看TWINE_CERT 环境变量的 twine 用户手册 https://twine.readthedocs.io/en/latest/.

    【讨论】:

      【解决方案2】:

      通过设置HTTPS_PROXY 环境变量,我已经能够在 Windows 下解决类似的问题,而无需设置任何关于证书的内容。

      cmd 提示符下工作,运行

      set HTTPS_PROXY=proxy.company.com:8080
      

      在同一会话中运行 twine 命令之前。

      环境变量也可以使用控制面板或https://superuser.com/q/79612/1148425中描述的方式永久设置

      【讨论】:

      • 不行:urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='upload.pypi.org', port=443): Max retries exceeded with url: /legacy/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)'),))
      • set TWINE_CERT=C:\CA_Proxy.pem 解决了这个问题。确保证书采用 PEM 格式。
      猜你喜欢
      • 1970-01-01
      • 2018-09-08
      • 2019-07-20
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多