인증 프록시 뒤의 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.