Как использовать 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", упомянутом выше.
Вот как я это настроил:
- Откройте командную строку (CMD) от имени администратора.
Экспортируйте настройки прокси:
set http_proxy=http://username:password@proxyAddress:port
set https_proxy=https://username:password@proxyAddress:port
Установите пакет, который вы хотите установить:
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
Такая же проблема с решениями 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».