Как использовать pip в Windows за аутентификационным прокси

Мой компьютер работает под управлением прокси-сервера на Windows-сервере (используя активную директорию), и я не могу понять, как с этим справиться pip (в python3). Я пытался использовать --proxy, но это все еще просто таймауты. Я также пытался установить длительное время ожидания (60 с), но это не имело значения. Мои настройки прокси верны, и я сравнил их с теми, которые я успешно использую в TortoiseHG, чтобы убедиться.

Есть ли другие хитрости, которые кто-нибудь знает о том, что я могу попробовать, или есть какое-то ограничение в pip Что касается Windows прокси?

Обновление: Мои неудачные попытки связаны с поиском pypi. Я только что попробовал установить что-то, и это сработало. Поиск по-прежнему не удается, хотя. Означает ли это ошибку в pip или они работают по другому?

12 ответов

Решение

Я пробовал 2 варианта, которые оба работают на прокси-сервере с проверкой подлинности NTLM моей компании. Вариант 1 заключается в использовании --proxy http://user:pass@proxyAddress:proxyPort

Если у вас все еще есть проблемы, я бы предложил установить службу аутентификации прокси (я использую CNTLM) и указать на нее пункт, то есть что-то вроде --proxy http://localhost:3128

Мне потребовалось пару часов, чтобы понять это, но я, наконец, заставил его работать с использованием CNTLM, а затем заставил его работать только с файлом конфигурации pip. Вот как у меня это работает с файлом конфигурации pip...

Решение:

1. В Windows перейдите в каталог своего профиля пользователя (например, C:\Users\Sync) и создайте папку с именем "pip".

2. Создайте файл с именем "pip.ini" в этом каталоге (например, C:\Users\Sync\pip\pip.ini) и введите в него следующее:

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org
    proxy = http://[domain name]%5C[username]:[password]@[proxy address]:[proxy port]

Замените [имя домена], [имя пользователя], [пароль], [адрес прокси] и [порт прокси] своей собственной информацией.

3. В этот момент я смог запустить "pip install" без проблем.

Надеюсь, это работает и для других!

PS: Это может представлять угрозу безопасности из-за того, что ваш пароль хранится в виде обычного текста. Если это проблема, рассмотрите возможность установки CNTLM с помощью этой статьи (позволяет использовать хешированный пароль вместо простого текста). После установить proxy = 127.0.0.1:3128в файле "pip.ini", упомянутом выше.

Вот как я это настроил:

  1. Откройте командную строку (CMD) от имени администратора.
  2. Экспортируйте настройки прокси:

    set http_proxy=http://username:password@proxyAddress:port

    set https_proxy=https://username:password@proxyAddress:port

  3. Установите пакет, который вы хотите установить:

    pip install PackageName

Например:

пример

Я столкнулся с той же проблемой в Windows 7. Мне удалось заставить ее работать, создав папку "pip" с файлом "pip.ini" внутри. Я поместил эту папку в "C:\Users\{my.username}\AppData\Roaming", потому что согласно документации Python:

В Windows файл конфигурации - это%APPDATA%\pip\pip.ini

В файле pip.ini у меня есть только:

[global]
proxy = [proxy address]:[proxy port]

Так что нет имени пользователя: пароль. И это работает просто отлично.

У меня была похожая проблема, и я обнаружил, что моя компания использует проверку подлинности прокси NTLM. Если вы видите эту ошибку в вашем pip.log, возможно, это проблема:

Не удалось получить URL-адрес http://pypi.python.org/simple/pyreadline: ошибка HTTP 407: требуется проверка подлинности прокси-сервера (для выполнения запроса ISA-серверу требуется авторизация. Доступ к фильтру веб-прокси запрещен.)

NTLMaps можно использовать для взаимодействия с прокси-сервером NTLM, став промежуточным прокси.

Загрузите NTLMAP, обновите включенный server.cfg, запустите файл main.py, а затем настройте параметр прокси pip на 127.0.0.1:.

Мне также нужно было изменить эти значения по умолчанию в server.cfg подать в:

LM_PART:1
NT_PART:1

# Highly experimental option. See research.txt for details.
# LM - 06820000
# NT - 05820000
# LM + NT - 
NTLM_FLAGS: 07820000

http://ntlmaps.sourceforge.net/

Такая же проблема с решениями Windows10 и выше не работает для меня.

используйте инструмент консоли эмулятора, например cygwin а затем сделайте это по умолчанию в Linux:

export http_proxy=<proxy>
export https_proxy=<proxy>
pip install <package>

и все работает нормально.

У меня была такая же проблема в удаленной среде Windows. Я пробовал много решений, найденных здесь или на других подобных постах, но ничего не получалось. Наконец, решение было довольно простым. Я должен был установить NO_PROXY с cmd:

set NO_PROXY="<domain>\<username>:<password>@<host>:<port>"
pip install <packagename>

Вы должны использовать двойные кавычки и установить NO_PROXY в верхний регистр. Вы также можете добавить NO_PROXY в качестве переменной среды вместо того, чтобы устанавливать ее каждый раз, когда вы используете консоль.

Я надеюсь, что это поможет, если любое другое решение, опубликованное здесь, сработает.

Установить cntlm: Cntlm: быстрый прокси-сервер аутентификации NTLM в C

Конфиг cntlm.ini:

Имя пользователя ob66759

Домен NAM

Секретный пароль

Proxy proxy1.net:8080

Прокси proxy2.net:8080

NoProxy localhost, 127.0.0. *, 10. *, 192.168. *

Слушай 3128

Разрешить 127.0.0.1

# ваш IP

Разрешить 10.106.18.138

Начни это:

cntlm -v -c cntlm.ini

Теперь в cmd.exe:

pip install --upgrade pip --proxy 127.0.0.1:3128

Collecting pip
  Downloading https://files.pythonhosted.
44c8a6e917c1820365cbebcb6a8974d1cd045ab4/

    100% |███████████████████████████████
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
      Successfully uninstalled pip-9.0.1

Successfully installed pip-10.0.1

работает!

Вы также можете скрыть пароль: https://stormpoopersmith.com/2012/03/20/using-applications-behind-a-corporate-proxy/

Попробуйте закодировать обратную косую черту между доменом и пользователем

      pip --proxy https://domain%5Cuser:password@proxy:port install -r requirements.txt

У вас также могут возникнуть проблемы с сертификатами вашего прокси. Здесь есть множество ответов о том, как получить сертификат вашего прокси.

На хосте Windows, чтобы позволить pip очистить ваш прокси, вы можете установить переменную окружения, такую ​​как:

PIP_CERT=C:\path\to\certificate\file\in\pem\form\myproxycert.pem

Вы также можете использовать --cert аргумент PIP с тем же результатом.

В моем случае это работало, когда я открывал командную строку (cmd) только как администратор, и никакой дополнительной информации о настройках прокси не требовалось.

Для меня проблема была в среде conda. Скорее всего, он использовал команду pip из среды conda («где pip» указывал на среду conda). Установка прокси-настроек через --proxy или set http_proxy не помогла.

Вместо этого помогло просто открыть новый CMD и выполнить там «pip install».

Другие вопросы по тегам