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

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

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

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



답변

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

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


답변

이것을 알아내는 데 몇 시간이 걸렸지 만 마침내 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”파일에서 설정 합니다.


답변

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

  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.ini”파일이있는 “pip”폴더를 만들어 작동하도록 관리했습니다. Python 문서에 따르면이 폴더를 “C : \ Users \ {my.username} \ AppData \ Roaming”에 넣었습니다.

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 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/


답변

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

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

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

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


답변

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

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

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

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