Tôi có thể đi xung quanh bằng cách sử dụng cài đặt pip Pip --cert không?


21

Cố gắng tìm hiểu xem có cách nào để tôi có thể tránh sử dụng cờ --cert cho pip khi tôi đang cài đặt các gói tại nơi làm việc. Có một số vấn đề với proxy chỉ cho phép tôi tải xuống các gói tôi cần khi tôi cung cấp cờ đó, mặc dù đã thêm mycert.crttệp vào /usr/local/share/ca-certificatesvà chạy sudo update-ca-certificates.

Một ví dụ về các thông điệp tôi đang thấy là:

$ 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

Điều này có thể được giải quyết bằng thay vì sử dụng:

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

Tuy nhiên, tôi không muốn phải làm như vậy (vì tôi chắc rằng các ứng dụng khác gặp phải vấn đề này).

Tôi đang chạy Linux Mint 15 (mặc dù trước đây tôi có vấn đề rất giống với Ubuntu 12.04), phiên bản pip 1.4.1.


Đây có thể là một bản sao tiềm năng của stackoverflow.com/questions/19377045/ cấp .. Tôi không chắc chính sách này là gì để tổng hợp, v.v.
Ryan

Câu trả lời:


9

Bạn có thể thiết lập thông qua tệp cấu hình pip, trong $HOME/.pip/pip.confhoặc %APPDATA%\pip\pip.initrên Windows:

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

Tập tin này cho phép bạn thiết lập về cơ bản tất cả các cờ được sử dụng bởi pip. Tài liệu đầy đủ có tại https://pip.pypa.io/en/latest/user_guide/#configuration


2
Tôi nghĩ rằng nhận xét của bạn về bài viết gốc của tôi dẫn đến câu trả lời thực sự, đó là pip không sử dụng các certs hệ thống. Đây là một giải pháp tốt, mặc dù nó gặp vấn đề khi tôi chuyển đổi giữa môi trường làm việc và gia đình (qua VPN). Nhiều vấn đề với chứng chỉ hơn là giải pháp mặc dù.
Ian Lee

1
Liên kết được cập nhật để định cấu hình: pip.pypa.io/en/latest/user_guide.html#configuration
sequoia

5

Đối với tôi, không có cách giải quyết tập tin cấu hình nào hoạt động. Tôi đang sử dụng pip 1.5.4 trên Ubuntu 14.04

Điều cuối cùng làm việc cho tôi là cài đặt chứng chỉ trên hệ thống trước tiên (đối với tôi trên ubfox này sẽ là)

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

Cái trước tự động cập nhật tệp bó (kiểm tra ở dưới cùng của /etc/ssl/certs/ca-certificates.crtbạn bây giờ sẽ thấy cùng một chứng chỉ như trong my_cert.crt)

Bây giờ sử dụng đường dẫn đó trong PIP_CERT. Và thêm nó vào .bashrc:

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

DISCLAIMER : Tôi đã đăng tải câu trả lời này trong SO (giống câu trả lời như trong 'liên kết cuối cùng nhân đôi trên', nhưng ở đầu tôi không tìm thấy người kia (câu trả lời cuối cùng nhân đôi) ... vì vậy nếu một người như tôi được ở đây đầu tiên, sau đó điều này có thể giúp đỡ.

Có lẽ tôi đang phá vỡ một số loại quy tắc để đăng cùng một câu trả lời hai lần, một trong SO và một trong siêu người dùng. Nếu vậy, xin lỗi về điều đó.


2

Điều này làm việc cho tôi mà không cần biết tập tin cấu hình sống ở đâu:

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

Tôi tin rằng bạn cần pip phiên bản 10+, mà bạn có thể tìm thấy với:

 python -m pip --version

Đầu ra của lệnh config set sau đó xuất tên của tệp config để thuận tiện cho bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.