วิธีใช้ pip บน windows หลังการพิสูจน์ตัวตนพร็อกซี


90

คอมพิวเตอร์ของฉันใช้งาน windows หลังพร็อกซีบนเซิร์ฟเวอร์ windows (โดยใช้ไดเรกทอรีที่ใช้งานอยู่) และฉันไม่สามารถหาวิธีผ่านมันด้วยpip(ใน python3) ฉันได้ลองใช้--proxyแล้ว แต่ก็ยังคงหมดเวลา ฉันได้ลองตั้งค่าการหมดเวลานานแล้ว (60s) แต่ก็ไม่ได้สร้างความแตกต่าง การตั้งค่าพร็อกซีของฉันถูกต้องและฉันเปรียบเทียบกับที่ฉันใช้สำเร็จใน TortoiseHG เพื่อให้แน่ใจ

มีเทคนิคอื่นใดที่ใคร ๆ ก็รู้ว่าฉันสามารถลองได้หรือมีข้อ จำกัด บางประการpipเกี่ยวกับพร็อกซีของ windows หรือไม่?

อัปเดต:ความพยายามที่ล้มเหลวของฉันเกี่ยวข้องกับการค้นหา pypi ฉันเพิ่งลองติดตั้งบางอย่างและใช้งานได้จริง การค้นหายังคงล้มเหลวแม้ว่า สิ่งนี้บ่งชี้ข้อบกพร่องในpipหรือทำงานแตกต่างกันหรือไม่

คำตอบ:


107

ฉันได้ลอง 2 ตัวเลือกซึ่งทั้งสองใช้ได้กับพร็อกซีรับรองความถูกต้อง NTLM ของ บริษัท ของฉัน ตัวเลือกที่ 1 คือการใช้--proxy http://user:pass@proxyAddress:proxyPort

หากคุณยังคงประสบปัญหาฉันขอแนะนำให้ติดตั้งบริการตรวจสอบความถูกต้องของพร็อกซี (ฉันใช้CNTLM ) และชี้ไปที่ pip เช่น--proxy http://localhost:3128


1
เครื่องมือ CNTLM ได้รับการบำรุงรักษาอย่างแข็งขันและดูเหมือนว่าจะทำงานได้ดีจริงๆ
Michał Fita

6
ฉันไม่สามารถทำให้มันใช้งานได้ไม่สำคัญทั้งหมดที่ฉันทำ
eusoubrasileiro

2
หากคุณมีอักขระพิเศษในรหัสผ่านหรือชื่อผู้ใช้ของคุณให้ขึ้นเครื่องหมาย \ ก่อนอักขระพิเศษ มันทำงานได้ดี
Arockia

ฉันเข้าใจสิ่งนี้ถูกต้องหรือไม่ว่าคุณกำลังบอกให้ pip ส่งคำขอไปยังพร็อกซีโดยพิสูจน์ตัวเองด้วยผู้ใช้และรหัสผ่านที่ระบุผ่านการเชื่อมต่อ http นั่นหมายความว่ารหัสผ่านของคุณจะถูกส่งโดยไม่เข้ารหัสไปยังพร็อกซีเซิร์ฟเวอร์ใช่ไหม!? ดูเหมือนมีความเสี่ยงด้านความปลอดภัยอย่างมากสำหรับฉันหรือฉันพลาดอะไร
Robert

ใช้งานได้กับไฟร์วอลล์ Microsoft Forefront
Raúl Salinas-Monteagudo

66

ฉันใช้เวลาสองสามชั่วโมงในการคิดออก แต่ในที่สุดฉันก็สามารถใช้งานได้โดยใช้ CNTLM และหลังจากนั้นก็ใช้งานได้กับไฟล์กำหนดค่า pip นี่คือวิธีที่ฉันใช้งานกับไฟล์ pip config ...

วิธีการแก้:

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" ที่กล่าวถึงข้างต้น


2
เพิ่มเติมเกี่ยวกับสถานที่ pip.ini สามารถพบได้ที่นี่ คุณสามารถตั้งค่าPIP_CONFIG_FILEตัวแปรสภาพแวดล้อมให้ชี้ไปที่ไฟล์
pip.ini

1
รักเลย !!!! สะอาดมาก - เพียงจำพร็อกซีส่วนใหญ่จะให้คุณป้อนรหัสผ่านด้วยตนเอง อย่าทิ้งรหัสผ่านของคุณในข้อความที่ชัดเจน!
avgvstvs

1
คุณสามารถเพิ่มการตั้งค่าส่วนกลางที่สำคัญอีกอย่างหนึ่งได้ที่นี่คือไซต์มิเรอร์เช่นเพิ่ม "index-url = pypi.tuna.tsinghua.edu.cn/simple " จะเพิ่มความเร็วในการดาวน์โหลด pip ได้มากใน PRC China และไฟล์ที่เกี่ยวข้องภายใต้ Linux คือ ~ / .pip / pip.conf
TingQian LI

4
[ชื่อโดเมน] คืออะไร?
Alex B

1
@AlexB, [ชื่อโดเมน] หมายถึงชื่อโดเมนwindowsของคุณ
Mike Pennington

46

นี่คือวิธีการตั้งค่า:

  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

ไม่ได้ผลสำหรับฉันบน win10 ใช้เครื่องมือจำลองคอนโซลเหมือนcygwinหรือcmderแล้วทำแบบลินุกซ์: export http_proxy=<proxy>และexport https_proxy=<proxy>แล้วก็ทำpip install <package>
บัคกี้

สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่--proxyแฟล็กบรรทัดคำสั่งไม่เคยทำ Windows 10.
AmbroseChapel

15

ฉันพบปัญหาเดียวกันใน 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]

ดังนั้นไม่มีชื่อผู้ใช้: รหัสผ่าน และมันก็ทำงานได้ดี


1
ในกรณีของฉันจะใช้งานได้ก็ต่อเมื่อฉันใส่ชื่อผู้ใช้และรหัสผ่านในข้อความที่ชัดเจนในไฟล์นี้ ... : / เหตุใด CMD จึงทำงานเหมือน "ping XYZ" เหตุใด pip จึงไม่ใช้การตั้งค่า IE
hmrc87

7

ฉันมีปัญหาที่คล้ายกันและพบว่า บริษัท ของฉันใช้การตรวจสอบสิทธิ์พร็อกซี NTLM หากคุณเห็นข้อผิดพลาดนี้ใน pip.log อาจเป็นปัญหา:

ไม่สามารถดึง URL http://pypi.python.org/simple/pyreadline : ข้อผิดพลาด HTTP 407: ต้องมีการตรวจสอบสิทธิ์พร็อกซี (เซิร์ฟเวอร์ ISA ต้องการการอนุญาตเพื่อตอบสนองคำขอการเข้าถึงตัวกรอง Web Proxy ถูกปฏิเสธ)

NTLMaps สามารถใช้เพื่อเชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ NTLM โดยการเป็นพร็อกซีกลาง

ดาวน์โหลด NTLMAPs อัปเดต 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/


2

ฉันมีปัญหาเดียวกันในสภาพแวดล้อม Windows ระยะไกล ฉันลองวิธีแก้ปัญหามากมายที่พบที่นี่หรือในโพสต์อื่น ๆ แต่ไม่ได้ผล ในที่สุดวิธีแก้ปัญหาก็ค่อนข้างง่าย ฉันต้องตั้งค่าNO_PROXYด้วย cmd:

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

คุณต้องใช้เครื่องหมายคำพูดคู่และตั้งค่าNO_PROXYเป็นตัวพิมพ์ใหญ่ คุณยังสามารถเพิ่มNO_PROXYเป็นตัวแปรสภาพแวดล้อมแทนการตั้งค่าทุกครั้งที่คุณใช้คอนโซล

ฉันหวังว่านี่จะช่วยได้หากวิธีอื่น ๆ ที่โพสต์ไว้ที่นี่ใช้งานได้


1

คุณอาจประสบปัญหาเกี่ยวกับใบรับรองจากพร็อกซีของคุณ มีคำตอบมากมายเกี่ยวกับวิธีดึงใบรับรองพร็อกซีของคุณที่นี่

บนโฮสต์ Windows เพื่ออนุญาตให้ pip ล้างพร็อกซีของคุณคุณอาจต้องการตั้งค่าตัวแปรสภาพแวดล้อมเช่น:

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

คุณยังสามารถใช้--certอาร์กิวเมนต์PIPกับผลลัพธ์เดียวกันได้


1

ติดตั้ง cntlm: Cntlm: Fast NTLM Authentication Proxy ใน C

กำหนดค่า cntlm.ini:

ชื่อผู้ใช้ ob66759

ชื่อโดเมน

รหัสลับ

พร็อกซี 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 - อัพเกรด 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แล้วทำตามวิธีเริ่มต้นของลินุกซ์:

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

0

พยายามเข้ารหัสแบ็กสแลชระหว่างโดเมนและผู้ใช้

pip --proxy https://domain%5Cuser:password@proxy:port install -r requirements.txt

0

สำหรับฉันปัญหาอยู่ในสภาพแวดล้อมของ conda โดยมากจะใช้คำสั่ง pip จากสภาพแวดล้อม conda ("โดยที่ pip" ชี้ไปที่สภาพแวดล้อม conda) การตั้งค่าพร็อกซีผ่าน --proxy หรือตั้งค่า http_proxy ไม่ได้ช่วยอะไร

เพียงแค่เปิด CMD ใหม่และทำการ "ติดตั้ง pip" ที่นั่นช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.