인증 프록시 뒤의 Windows에서 pip를 사용하는 방법


90

내 컴퓨터는 Windows 서버의 프록시 뒤에서 Windows를 실행 중이며 (활성 디렉토리 사용) pip(python3에서) 그것을 통해 얻는 방법을 알 수 없습니다 . 을 사용해 보았지만 --proxy여전히 시간 초과입니다. 또한 긴 시간 제한 (60 초)을 설정해 보았지만 아무런 차이가 없었습니다. 내 프록시 설정이 올 바르고 TortoiseHG에서 성공적으로 사용중인 프록시 설정과 비교하여 확인했습니다.

누구든지 내가 시도 할 수있는 다른 트릭이 있습니까, 아니면 pipWindows 프록시와 관련하여 제한이 있습니까?

업데이트 : 실패한 시도는 pypi 검색과 ​​관련이 있습니다. 나는 실제로 무언가를 설치하려고 시도했지만 작동했습니다. 그래도 검색이 실패합니다. 버그가 있음을 나타내 pip거나 다르게 작동합니까?

답변:


107

회사의 NTLM 인증 프록시에서 작동하는 두 가지 옵션을 시도했습니다. 옵션 1은--proxy http://user:pass@proxyAddress:proxyPort

여전히 문제가있는 경우 프록시 인증 서비스 ( CNTLM 사용 )를 설치하고 pip를 가리키는 것이 좋습니다.--proxy http://localhost:3128


1
CNTLM 도구는 적극적으로 유지 관리되며 정말 잘 작동하는 것 같습니다.
Michał Fita

6
나는 그것이 모두 내가 한 tentatives 중요하지 일을 만들 수 없습니다
eusoubrasileiro

2
암호 또는 사용자 이름에 특수 문자가있는 경우 특수 문자 앞에 \를 사용하여 이스케이프하십시오. 잘 작동합니다.
Arockia

http 연결을 통해 주어진 사용자와 암호로 자신을 인증하고 프록시에 요청을 보내도록 pip에 지시하고 있음을 올바르게 이해합니까? 즉, 암호가 암호화되지 않은 상태로 프록시 서버로 전송됩니다. 나에게 큰 보안 위험이있는 것 같거나 뭔가 놓치고 있습니까?
Robert

그것은 마이크로 소프트의 최전선 방화벽 나를 위해 일한
라울 살리나스 - Monteagudo에게

65

이것을 알아내는 데 몇 시간이 걸렸지 만 마침내 CNTLM을 사용하여 작동하게되었고 나중에 pip 구성 파일로만 작동하도록했습니다. 다음은 pip 구성 파일로 작동하는 방법입니다.

해결책:

1. Windows에서 사용자 프로필 디렉터리 (예 : C : \ Users \ Sync)로 이동하여 " pip " 라는 폴더를 만듭니다.

2. 이 디렉터리 (예 : C : \ Users \ Sync \ pip \ pip.ini)에 " 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 " 을 실행할 수있었습니다 .

바라건대 이것은 다른 사람들에게도 효과가 있습니다!

추신 : 암호를 일반 텍스트로 저장하기 때문에 보안 문제가 발생할 수 있습니다. 이것이 문제라면 이 문서를 사용하여 CNTLM을 설정하는 것이 좋습니다 (일반 텍스트 대신 해시 된 암호 사용 허용). 나중에 proxy = 127.0.0.1:3128위에서 언급 한 "pip.ini"파일에서 설정 합니다.


2
pip.ini 위치에 대한 자세한 내용은 여기 에서 찾을 수 있습니다 . PIP_CONFIG_FILEpip.ini 파일을 가리 키도록 환경 변수를 설정할 수 있습니다
Mahesha999

1
그것을 사랑하십시오 !!!! 매우 깔끔합니다. 대부분의 프록시를 사용하면 수동으로 비밀번호를 입력 할 수 있습니다. 암호를 일반 텍스트로 남겨 두지 마십시오!
avgvstvs

1
여기에 추가 할 수있는 또 다른 매우 중요한 글로벌 설정은 미러 사이트입니다. 예를 들어 "index-url = pypi.tuna.tsinghua.edu.cn/simple "을 추가하면 중국에서 pip 다운로드 속도가 크게 향상됩니다. 그리고 리눅스에서 해당 파일은 ~ / .pip / pip.conf입니다
TingQian LI

4
[도메인 이름]은 무엇입니까?
Alex B

1
@AlexB는 [도메인 이름] 당신을 말한다 윈도우 도메인 이름
마이크 페닝 턴

45

이것이 내가 설정하는 방법입니다.

  1. 관리자 권한으로 명령 프롬프트 (CMD)를 엽니 다.
  2. 프록시 설정 내보내기 :

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

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

  3. 설치할 패키지를 설치하십시오.

    pip install PackageName

예를 들면 :

예


4
이것은 확실히 가장 먼저 시도하는 것입니다. Python은 크로스 플랫폼이며 이는 Linux에서 일반적으로 수행하는 작업과 동일합니다. Windows에서 (동일한 프록시 뒤에) 문제가 있었는데 --proxy인수에 전혀 포함되지 않았지만 표준 env var 접근 방식이 처음으로 작동했습니다. 기록 no_proxy을 위해 프록시를 통해 나가려는 다른 내부 요청도 피하도록 설정 했습니다.
randomsock 2017

win10에서 나를 위해 작동하지 않습니다. 같은 에뮬레이터 콘솔 도구를 사용 cygwin하거나 cmder다음 그것을 리눅스 방식을 수행 export http_proxy=<proxy>하고 export https_proxy=<proxy>다음 바로 할pip install <package>
버키

이것은 나를 위해 일했지만 --proxy명령 줄 플래그는 결코 작동하지 않았습니다. Windows 10.
AmbroseChapel

15

Windows 7에서 동일한 문제가 발생했습니다. 내부에 "pip.ini"파일이있는 "pip"폴더를 만들어 작동하도록 관리했습니다. Python 문서에 따르면이 폴더를 "C : \ Users \ {my.username} \ AppData \ Roaming"에 넣었습니다.

Windows에서 구성 파일은 % APPDATA % \ pip \ pip.ini입니다.

pip.ini 파일에는 다음 만 있습니다.

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

따라서 사용자 이름 : 암호가 없습니다. 그리고 그것은 잘 작동합니다.


1
제 경우에는이 파일에 내 사용자 이름과 암호를 일반 텍스트로 입력 한 경우에만 작동합니다 ... : / CMD의 다른 모든 항목이 "ping XYZ"처럼 작동하는 이유는 무엇입니까? IE 설정을 사용하지 않는 이유는 무엇입니까?
hmrc87

7

비슷한 문제가 있었는데 회사에서 NTLM 프록시 인증을 사용한다는 사실을 알게되었습니다. pip.log에이 오류가 표시되면 다음과 같은 문제 일 수 있습니다.

URL http://pypi.python.org/simple/pyreadline을 가져올 수 없습니다 . HTTP 오류 407 : 프록시 인증 필요 (ISA Server에 요청을 수행하려면 인증이 필요합니다. 웹 프록시 필터에 대한 액세스가 거부되었습니다.)

NTLMap은 중간 프록시가되어 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/


1

프록시의 인증서에 문제가 발생할 수도 있습니다. 여기에 프록시 인증서를 검색하는 방법에 대한 많은 답변이 있습니다.

Windows 호스트에서 pip가 프록시를 지우도록 허용하려면 다음과 같은 환경 변수를 설정할 수 있습니다.

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

동일한 결과로 --certto 인수를 사용할 수도 PIP있습니다.


1

원격 Windows 환경에서 동일한 문제가 발생했습니다. 여기 또는 다른 유사한 게시물에서 찾은 많은 솔루션을 시도했지만 아무것도 작동하지 않았습니다. 마지막으로 해결책은 매우 간단했습니다. NO_PROXYcmd 로 설정해야했습니다 .

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

큰 따옴표를 사용 NO_PROXY하고 대문자로 설정 해야합니다. NO_PROXY콘솔을 사용할 때마다 설정하는 대신 환경 변수로 추가 할 수도 있습니다 .

여기에 게시 된 다른 솔루션이 작동하면 도움이되기를 바랍니다.


1

cntlm 설치 : Cntlm : C에서 빠른 NTLM 인증 프록시

cntlm.ini 구성 :

사용자 이름 ob66759

도메인 NAM

비밀번호 비밀

프록시 proxy1.net:8080

프록시 proxy2.net:8080

NoProxy 로컬 호스트, 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/


1

windows10 이상 솔루션에서 동일한 문제가 작동하지 않습니다.

에뮬레이터 콘솔 도구를 사용한 cygwin다음 기본 Linux 방식으로 수행하십시오.

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

일이 잘 작동하고 있습니다.


Windows 10에서 인증 프록시를 사용하면이 방법이 작동합니다. cntlm을 중간 프록시로 사용하고 msdos 프롬프트에서 "set https_proxy = localhost : 3128"을 누른 다음 "pip install -U setuptools == 41.0.1"
mrtexaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.