如何为每个配置文件配置 PIP 以使用代理(带身份验证)?

How to configure PIP per config file to use a proxy (with authentification)?

我过去常常设置环境变量 http_proxy 和 https_proxy(使用用户名 + 密码),以便在公司代理后面使用 Pip(在 Windows 上)。但最近我需要告诉 Pip 在不设置环境变量的情况下使用代理,因为这与 git 配置和 SSL 证书相冲突,我只能通过删除代理的环境变量来工作。

幸运的是,您可以使用 pip.ini 文件配置 PIP,如下所述:https://pip.pypa.io/en/stable/user_guide/#config-file

我自己的问题的详细答案如下。

以下是如何在 pip 的配置文件中配置代理(带身份验证)的步骤 (pip.ini)

  1. (如果它不存在)创建一个名为 'pip' 的文件夹,并在其中创建一个名为 'pip.ini' 的文件,如下所述:https://pip.pypa.io/en/stable/user_guide/#config-file(位置和名称可能因平台而异- 例如在 Windows 上是 %APPDATA%\pip\pip.ini)
  2. 编辑 pip.ini 文件并添加

    [global]
    proxy = http://user:password@proxy_name:port
    
  3. 就是这样!

具有身份验证的代理示例(用户 + 密码):

代理 = http://butch:secret@proxyname:1234

proxyname 也可以是 IP 地址

没有授权的代理示例:

代理 = http://proxyname:1234

您需要在安装包时设置代理选项。 示例:

pip install --proxy userid:password@proxy.domain.com:yourport

为了在终端中添加代理选项,以下行解决了我的问题:

pip install package_name_here --proxy https://user_name:password@proxyname:port

如果您尝试安装的包有依赖项,最好为系统范围的配置创建 pip.ini,在 windows 中,您可以在 powershell 中执行此操作:

mkdir c:\programdata\pip\
new-item c:\programdata\pip\pip.ini

并将其添加到您的 pip.ini

[global]
proxy = http://domain\user:pwd@proxy_hostname_or_ip:port 

然后一切正常,因为 HTTP_PROXY 变量对我不起作用。

确保将文件保存为 ansi 或 windows1252 格式 VSCode,因为 UTF 文件无法正确读取。

更容易一点:

pip config set global.proxy http://{host}:{port}

它会自动保留设置

Writing to C:\Users\{username}\AppData\Roaming\pip\pip.ini