ฉันสามารถใช้“ pip install --cert” ได้ไหม?


21

พยายามหาว่ามีวิธีที่ฉันสามารถหลีกเลี่ยงการใช้ --cert flag เพื่อ pip เมื่อฉันติดตั้งแพ็คเกจในที่ทำงานหรือไม่ มีปัญหาบางอย่างกับพร็อกซี่ที่เพียง แต่ช่วยให้ฉันเพื่อดาวน์โหลดแพคเกจที่ฉันต้องการเมื่อฉันให้ธงนั่นคือแม้จะมีการเพิ่มmycert.crtไฟล์และทำงาน/usr/local/share/ca-certificatessudo update-ca-certificates

ตัวอย่างของข้อความที่ฉันเห็นคือ:

$ pip install "virtualenv>=1.10.1"
Downloading/unpacking virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not fetch URL https://pypi.python.org/simple/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/ when looking for download links for virtualenv>=1.10.1
  Cannot fetch index base URL https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/virtualenv/: There was a problem confirming the ssl certificate: <urlopen error [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
  Will skip URL https://pypi.python.org/simple/virtualenv/ when looking for download links for virtualenv>=1.10.1
  Could not find any downloads that satisfy the requirement virtualenv>=1.10.1
Cleaning up...
No distributions at all found for virtualenv>=1.10.1
Storing complete log in /tmp/tmpwW5qXD

สามารถแก้ไขได้ด้วยการใช้แทน:

pip install --cert=/usr/local/share/ca-certificates/mycert.crt

อย่างไรก็ตามฉันไม่ต้องการทำเช่นนั้น (เพราะฉันแน่ใจว่าแอปพลิเคชันอื่น ๆ ชนกับปัญหานี้)

ฉันใช้ Linux Mint 15 (แต่ก่อนหน้านี้ฉันมีปัญหาคล้ายกันมากใน Ubuntu 12.04), pip version 1.4.1


นี่อาจเป็นความซ้ำซ้อนของstackoverflow.com/questions/19377045//นี้.. ฉันไม่แน่ใจว่านโยบายนี้มีไว้สำหรับการรวม ฯลฯ
Ryan

คำตอบ:


9

คุณสามารถตั้งค่าผ่านไฟล์การกำหนดค่า pip ซึ่งอยู่ใน$HOME/.pip/pip.confหรือ%APPDATA%\pip\pip.iniบน Windows:

[global]
cert = /usr/local/share/ca-certificate/mycert.crt

ไฟล์นี้ช่วยให้คุณสามารถตั้งค่าสถานะทั้งหมดที่ใช้โดย pip เอกสารฉบับเต็มอยู่ที่https://pip.pypa.io/en/latest/user_guide/#configuration


2
ฉันคิดว่าความคิดเห็นของคุณในโพสต์ต้นฉบับของฉันนำไปสู่คำตอบที่แท้จริงซึ่ง pip นั้นไม่ได้ใช้ certs ของระบบ นี่เป็นทางออกที่ดีแม้ว่าจะพบปัญหาเมื่อฉันสลับระหว่างสภาพแวดล้อมการทำงานและที่บ้าน (ผ่าน VPN) มีปัญหาเพิ่มเติมเกี่ยวกับใบรับรองมากกว่าวิธีแก้ปัญหา
Ian Lee

1
อัปเดตลิงก์ไปยังการกำหนดค่า: pip.pypa.io/en/latest/user_guide.html#configuration
sequoia

5

สำหรับฉันไม่ใช่วิธีแก้ไขปัญหาของไฟล์กำหนดค่าทำงาน ฉันใช้pip 1.5.4บนUbuntu 14.04

สิ่งที่ใช้งานได้ในที่สุดสำหรับฉันคือการติดตั้งใบรับรองบนระบบก่อน (สำหรับฉันบน Ubuntu นี้จะเป็น)

sudo cp ~/my_cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

ก่อนหน้านี้อัปเดตไฟล์บันเดิลโดยอัตโนมัติ (ตรวจสอบที่ด้านล่างของ/etc/ssl/certs/ca-certificates.crtคุณตอนนี้ควรเห็นใบรับรองเดียวกันกับในmy_cert.crt)

ตอนนี้ใช้เส้นทางPIP_CERTนั้น และเพิ่มลงในของฉัน.bashrc:

echo export PIP_CERT=/etc/ssl/certs/ca-certificates.crt >> ~/.bashrc

การปฏิเสธความรับผิด : ฉันได้โพสต์คำตอบนี้ใน SO (คำตอบเดียวกับใน 'ลิงค์ซ้ำในที่สุดข้างต้น' แต่ในตอนแรกฉันไม่พบคำตอบอื่น (คำตอบซ้ำในที่สุด) ... ดังนั้นถ้ามีคนอย่างฉันมาที่นี่ก่อน นี่อาจช่วยได้

บางทีฉันผิดกฎบางอย่างเพื่อโพสต์คำตอบเดียวกันสองครั้งหนึ่งใน SO และอีกหนึ่งใน superuser ถ้าเป็นเช่นนั้นขอโทษเกี่ยวกับที่


2

สิ่งนี้ใช้ได้สำหรับฉันโดยไม่จำเป็นต้องทราบว่าไฟล์ config อยู่ที่ใด:

python -m pip config set global.cert C:\\Path\\cert.crt

ฉันเชื่อว่าคุณต้องการ pip รุ่น 10+ ซึ่งคุณสามารถค้นหาได้ด้วย:

 python -m pip --version

จากนั้นคำสั่ง config set จะแสดงชื่อไฟล์ config เพื่อความสะดวกของคุณ

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