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

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

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

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

Ответ 1

Я попробовал 2 варианта, которые оба работают на моем прокси-сервере, прошедшем проверку подлинности NTLM. Вариант 1 заключается в использовании --proxy http://user:[email protected]:proxyPort

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

Ответ 2

Мне потребовалось пару часов, чтобы понять это, но я, наконец, заставил его работать с использованием 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", упомянутом выше.

Ответ 3

Вот как я его установил:

  • Откройте командную строку (CMD) в качестве администратора.
  • Экспортируйте настройки прокси-сервера:

    set http_proxy=http://username:[email protected]:port

    set https_proxy=https://username:[email protected]:port

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

    pip install PackageName

Например:

Пример

Ответ 4

Я столкнулся с той же проблемой в 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]

Итак, нет имени пользователя: пароль. И он работает нормально.

Ответ 5

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

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

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

Загрузите NTLMAP, обновите включенный server.cfg, запустите файл main.py, а затем укажите параметр прокси-сервера точки на 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/

Ответ 6

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

На хосте Windows, чтобы позволить очистить свой прокси-сервер, вы можете установить переменную среды, например:

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

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

Ответ 7

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

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

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

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

Ответ 8

установить 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/

Ответ 9

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

Ответ 10

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

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

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

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