Cài đặt pip không thành công với lỗi kết nối, lỗi: Chứng nhận [SSL: CERTIFICATE_VERIFY_FAILED] xác minh không thành công (_ssl.c: 598)


397

Tôi rất mới với Python và đang thử > pip install linkcheckertrên Windows 7. Một số lưu ý:

  • cài đặt pip không thành công cho dù gói. Ví dụ, > pip install scrapycũng dẫn đến lỗi SSL.
  • Cài đặt Vanilla của Python 3.4.1 bao gồm pip 1.5.6. Điều đầu tiên tôi cố gắng làm là cài đặt linkchecker. Python 2.7 đã được cài đặt, nó đi kèm với ArcGIS. pythonpipkhông có sẵn từ dòng lệnh cho đến khi tôi cài đặt 3.4.1.
  • > pip search linkcheckerlàm. Có lẽ đó là do tìm kiếm pip không xác minh chứng chỉ SSL của trang web.
  • Tôi đang ở trong một mạng công ty nhưng chúng tôi không thông qua proxy để truy cập Internet.
  • Mỗi máy tính của công ty (bao gồm cả máy tính của tôi) có Cơ quan cấp chứng chỉ gốc đáng tin cậy được sử dụng vì nhiều lý do bao gồm cho phép theo dõi lưu lượng TLS đến https://google.com . Không chắc chắn nếu có bất cứ điều gì để làm với nó.

Dưới đây là nội dung của pip.log của tôi sau khi chạy pip install linkchecker:

Downloading/unpacking linkchecker
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Getting page https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
  Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
  Cannot fetch index base URL https://pypi.python.org/simple/
  URLs to search for versions for linkchecker:
  * https://pypi.python.org/simple/linkchecker/
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
  Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker

1
Hoàn toàn ngược lại! Python 3.4.1 trở về trước không thực hiện xác nhận chứng chỉ theo mặc định. Nếu bạn đang sử dụng Python 3.4.2, tôi sẽ nghĩ đó là vấn đề. (Xem vấn đề 21013chủ đề này trong danh sách gửi thư . Lưu ý rằng đó là sự khởi đầu của một chuỗi khá dài.) Xin lỗi tôi thực sự không thể giúp!
Cody Piersall

3
Kiểm tra nếu bạn có fiddler mở và đóng nó. Fiddler thử phá vỡ SSL và điều này phá vỡ pip, khi tôi đóng pip fiddler làm việc cho tôi. Khi tôi đóng fiddler, mọi thứ đều ổn
Jose Barbosa

Câu trả lời:


639

-----> cài đặt cấu hình gensim --global http.sslVerify false

Chỉ cần cài đặt bất kỳ gói nào với câu lệnh "config --global http.sslVerify false"

Bạn có thể bỏ qua lỗi SSL bằng cách đặt pypi.orgfiles.pythonhosted.orglàm máy chủ đáng tin cậy.

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>

Lưu ý : Đôi khi trong tháng 4 năm 2018, Chỉ mục gói Python đã được di chuyển từ pypi.python.orgsang pypi.org. Điều này có nghĩa là các lệnh "máy chủ đáng tin cậy" sử dụng tên miền cũ không còn hoạt động.

Sửa chữa vĩnh viễn

Kể từ khi phát hành pip 10.0, bạn sẽ có thể sửa lỗi này vĩnh viễn chỉ bằng cách nâng cấp pipchính nó:

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools

Hoặc chỉ bằng cách cài đặt lại để có phiên bản mới nhất:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(Sau đó chạy get-pip.pyvới trình thông dịch Python có liên quan).

pip install <otherpackage>Chỉ nên làm việc sau này. Nếu không, sau đó bạn sẽ cần phải làm nhiều hơn, như được giải thích dưới đây.


Bạn có thể muốn thêm các máy chủ và proxy đáng tin cậy vào tệp cấu hình của mình .

pip.ini(Windows) hoặc pip.conf(unix)

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Giải pháp thay thế (Ít an toàn hơn)

Hầu hết các câu trả lời có thể đặt ra một vấn đề bảo mật.

Hai cách giải quyết giúp cài đặt hầu hết các gói python một cách dễ dàng là:

  • Sử dụng easy_install : nếu bạn thực sự lười biếng và không muốn lãng phí nhiều thời gian, hãy sử dụng easy_install <package_name>. Lưu ý rằng một số gói sẽ không được tìm thấy hoặc sẽ đưa ra các lỗi nhỏ.
  • Sử dụng Wheel : tải xuống Wheel of the python và sử dụng lệnh pip pip install wheel_package_name.whlđể cài đặt gói.

7
Cập nhật của bạn có những thứ đi cho tôi. Trong trường hợp của tôi, tường lửa công ty tự chèn mình là máy chủ đáng tin cậy cho các kết nối SSL. Tôi cho rằng thiết lập proxy là sai nhưng thêm verbose cho thấy vấn đề là SSL. Thay đổi url-chỉ số đã làm việc xung quanh vấn đề.
peater

11
Tuyệt vời, thx! Các máy chủ đáng tin cậy dường như là đủ, tức là. pip install --trusted-host pypi.python.org pypi_package. Sử dụng --verbosecho thấy rằng không có --trusted-host, kết nối HTTPS không thành công, trong khi kết nối HTTPS tương tự được thử (không phải HTTP) --trusted-hostnhưng nó đã thành công.
Oliver

12
Không sử dụng phiên bản HTTP (và thậm chí tin tưởng nó) cũng là một rủi ro bảo mật?
Paŭlo Ebermann

3
bạn có thể rút ngắn thông số --index-url, thử lệnh này cũng sẽ ổn:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu

8
nó không làm việc cho tôi Chạy mac os high sierra trên macbookpro 15 "Python 2.7 pip 9.0.1 Tôi đã thử cả hai: sudo -H pip install --trusty-host pypi.python.org numpy và sudo pip install --trusty-host pypi.python.org numPy nó luôn mang lại cho tôi những lỗi tương tự: "có một vấn đề xác nhận giấy chứng nhận ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 cảnh báo phiên bản giao thức (_ssl.c: 661) - bỏ qua không thể tìm thấy một phiên bản đáp ứng yêu cầu"
DaniPaniz

123

Bạn có thể chỉ định một chứng chỉ với thông số này:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

Xem: Tài liệu »Hướng dẫn tham khảo» pip

Nếu chỉ định chứng chỉ gốc của công ty bạn không hoạt động, có thể chứng nhận cURL sẽ hoạt động: http://curl.haxx.se/ca/cacert.pem

Bạn phải sử dụng tệp PEM chứ không phải tệp CRT. Nếu bạn có tệp CRT, bạn sẽ cần chuyển đổi tệp thành PEM Có các báo cáo trong các nhận xét rằng tính năng này hiện hoạt động với tệp CRT nhưng tôi chưa xác minh.

Đồng thời kiểm tra: Xác nhận Chứng chỉ SSL .


1
Curl một IS an toàn. Tôi sẽ đề nghị sử dụng đó.
Steve Tauber

1
@JeremyCook đó có thể là thời gian trên máy chủ của bạn, nếu đó là quá khứ thì đó có thể là quá trình xác minh
Giovanni Bitliner

1
Định dạng CRT không được hỗ trợ, chỉ có định dạng PEM. Bạn sẽ cần phải chuyển đổi định dạng CRT sang PEM bằng cách sử dụng openssl. Bạn cũng nên xác minh rằng gói bạn đã tải xuống có chứa CA gốc. Vui lòng xem câu trả lời của tôi ở trên để biết chi tiết: stackoverflow.com/a/28724886/41957 .
chnrxn

1
@JeremyCook, PEM / certs không đến trực tiếp từ bên thứ ba mà bạn đã tải xuống từ đó. Họ thu thập các certs từ các nguồn ban đầu. Bên thứ 3 không thể tạo chứng chỉ cho người khác trừ khi họ có khóa chính xác (chỉ người khác mới có).
chnrxn

4
@endolith - Nhìn vào pip.pypa.io/en/stable/user_guide/#configuration có vẻ như bạn có thể biến môi trường sử dụng, hoặc một pip.conftập tin để có chúng tham chiếu vĩnh viễn mà không chỉ định trên lệnh
Cinderhaze

63

Câu trả lời của kenorb rất hữu ích (và tuyệt vời!).
Trong số các giải pháp của ông, có lẽ đây là giải pháp đơn giản nhất: --trusted-host

Ví dụ, trong trường hợp này bạn có thể làm

pip install --trusted-host pypi.python.org linkchecker

Các tập tin pem (hoặc bất cứ điều gì khác) là không cần thiết.


Điều này cũng hoạt động cho các lệnh khác nhưpip list --trusted-host pypi.python.org --outdated
Igor

61

Đối với tôi, vấn đề đã được cố định bằng cách tạo ra một thư mục pipvới file: pip.ini trong C:\Users\<username>\AppData\Roaming\ ví dụ:

C:\Users\<username>\AppData\Roaming\pip\pip.ini

Trong đó tôi đã viết:

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Tôi đã khởi động lại python, và sau đó pip tin tưởng vĩnh viễn các trang web này và sử dụng chúng để tải xuống các gói từ đó.

Nếu bạn không thể tìm thấy Thư mục AppData trên windows, hãy ghi %appdata%vào trình duyệt tệp và nó sẽ xuất hiện.


Kỳ lạ là điều này không giúp ích gì cho máy Win10 của tôi: /
mcandre

1
Tại nơi làm việc, môi trường Windows 10, sử dụng trình giả lập bảng điều khiển Cmder. --trusty-host được sử dụng để giải quyết vấn đề "'SSLError (SSLCertVerifyingError (1,' [SSL: CERTIFICATE_VERIFY_FAILED] xác minh không thành công: chứng chỉ tự ký trong chuỗi chứng chỉ". lấy từ ../AppData/Local/) trong ../AppData/Roaming/ và tất cả đều đúng với thế giới trăn địa phương của tôi một lần nữa. Cảm ơn nhiều!
IdusOrtus

1
Tuyệt quá! Cảm ơn rât nhiều. --trusty-host không hoạt động với tôi bây giờ, nhưng giải pháp của bạn có ích.
Alexander Prokofyev

1
Tại sao điều này không được tải xuống khi cài đặt Python>
98Ed 30/10/19

Tuyệt vời! Tôi đã tìm kiếm các lỗi liên quan đến GIT, proxy của công ty, SSL và nó chỉ liên quan đến pip. Cảm ơn bạn và tôi hy vọng bình luận này mang đến đây những người bối rối như tôi.
negas

41

Các câu trả lời khá giống nhau và hơi khó hiểu. Trong trường hợp của tôi, các chứng chỉ trong mạng của công ty tôi là vấn đề. Tôi đã có thể giải quyết vấn đề bằng cách sử dụng:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

Như đã thấy ở đây . Đối số -vv có thể được bỏ qua nếu không yêu cầu đầu ra dài dòng


10
Chỉ có một để khắc phục vấn đề của tôi, cảm ơn.
Gringo Suave

Tuyệt vời, người duy nhất làm việc cho tôi là tốt!
ethikz

Hoạt động vì hôm nay tôi đứng sau một số proxy loại bỏ SSL bình thường. Tôi thường không cần chỉ định máy chủ đáng tin cậy khi người lớn chạy mạng.
MrChrister

điều này cũng làm việc cho tôi ở trên không hoạt động
Srinath Ganesh

32

Sửa chữa vĩnh viễn

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

Ví dụ:

pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org

24

Để giải quyết vấn đề này một lần và mãi mãi, bạn có thể xác minh rằng bạn có một pip.conftệp.

Đây là nơi bạn pip.confnên đến, theo tài liệu :

Trên Unix tệp cấu hình mặc định là: $HOME/.config/pip/pip.conftôn trọng biến môi trường XDG_CONFIG_HOME.

Trên macOS, tệp cấu hình là $HOME/Library/Application Support/pip/pip.confnếu thư mục $HOME/Library/Application Support/piptồn tại khác$HOME/.config/pip/pip.conf

Trên Windows tập tin cấu hình là %APPDATA%\pip\pip.ini.

Bên trong một virtualenv:

Trên Unix và macOS, tập tin là $VIRTUAL_ENV/pip.conf

Trên Windows tệp là: %VIRTUAL_ENV%\pip.ini

Bạn pip.confsẽ trông giống như:

[global]
trusted-host = pypi.python.org

pip install linkcheckercài đặt linkcheckermà không phàn nàn sau khi tôi tạo pip.conftập tin.


1
$ HOME / Thư viện / Hỗ trợ ứng dụng / Pip không tồn tại trên máy của tôi, có vị trí thay thế không?
42shadow42

Có vẻ như piphướng dẫn sử dụng đã được cập nhật kể từ khi tôi đăng câu trả lời này. Tôi đã cập nhật câu trả lời của tôi cho macOS. Nó có giúp gì không?
Alex-Antoine Fortin

Không ảnh hưởng đến lỗi SSL trên máy Win10 của tôi: /
mcandre

Không khắc phục sự cố trên MacOSX.
MoDJ

Tôi đang dùng macOS. Nếu bạn đã cài đặt python3 bằng cách sử dụng brewthì hãy chắc chắn rằng bạn đang sử dụng pip3và tạo pip.confnhư $HOME/.config/pip/pip.conf. Tôi đã làm việc cho tôi.
anu

23

Cách đơn giản nhất mà tôi đã tìm thấy, là tải xuống và sử dụng "DigiCert High Assurance EV Root CA" từ DigiCert tại https://www.digicert.com/digicert-root-certert.htmlm#roots

Bạn có thể truy cập https://pypi.python.org/ để xác minh nhà phát hành chứng chỉ bằng cách nhấp vào biểu tượng khóa trong thanh địa chỉ hoặc tăng tín dụng của bạn bằng cách sử dụng openssl:

$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

Giá trị CN cuối cùng trong chuỗi chứng chỉ là tên của CA mà bạn cần tải xuống.

Đối với nỗ lực một lần, hãy làm như sau:

  1. Tải xuống CRT từ DigiCert
  2. Chuyển đổi định dạng CRT sang PEM
  3. Xuất biến môi trường PIP_CERT sang đường dẫn của tệp PEM

(dòng cuối cùng giả định rằng bạn đang sử dụng bash shell) trước khi chạy pip.

curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt 
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem

Để làm cho điều này có thể sử dụng lại, hãy đặt DigiCertHighAssuranceEVRootCA.crt ở đâu đó phổ biến và xuất PIP_CERT tương ứng trong ~ / .bashrc của bạn.


4
Đã sử dụng câu trả lời của bạn để xuất CA gốc của công ty chúng tôi sang biến PIP_CERT và cuối cùng sau khi thử mọi thứ khác, bao gồm cả 'pip --cert cert.pem' theo cách của bạn đã hoạt động ... chỉ cần gói cài đặt pip. BIG +1 - vâng, chúng tôi có một firewal / proxy / utm.
Marlon

Điều này vẫn thất bại đối với tôi trên Mac Mojave. Tôi đã làm theo đúng 3 bước và tôi vẫn nhận được "Lỗi: pip được định cấu hình với các vị trí yêu cầu TLS / SSL, tuy nhiên mô-đun ssl trong Python không khả dụng". Tôi đã thử tất cả các tùy chọn --trusty-host và --cert và pip sẽ không hoạt động. Tôi đã cố gắng nâng cấp pip và gặp lỗi SSL. Tôi đã cài đặt pip từ đầu với curl và tôi vẫn gặp lỗi khi chạy pip. Thời gian để bỏ pip và dính vào conda :(
user1255933

21

Bạn có các khả năng sau đây để giải quyết vấn đề với CERTIFICATE_VERIFY_FAILED:

  • Sử dụng HTTP thay vì HTTPS (ví dụ --index-url=http://pypi.python.org/simple/).
  • Sử dụng --cert <trusted.pem>hoặc CA_BUNDLEbiến để chỉ định gói CA thay thế.

    Ví dụ: bạn có thể truy cập URL không thành công từ trình duyệt web và nhập chứng chỉ gốc vào hệ thống của bạn.

  • Chạy python -c "import ssl; print(ssl.get_default_verify_paths())"để kiểm tra cái hiện tại (xác nhận nếu tồn tại).

  • OpenSSL có một cặp môi trường ( SSL_CERT_DIR, SSL_CERT_FILE) có thể được sử dụng để chỉ định cơ sở dữ liệu chứng chỉ khác nhau PEP-476 .
  • Sử dụng --trusted-host <hostname>để đánh dấu máy chủ là đáng tin cậy.
  • Trong Python sử dụng verify=Falsecho requests.get(xem: Xác minh Chứng chỉ SSL ).
  • Sử dụng --proxy <proxy>để tránh kiểm tra chứng chỉ.

Đọc thêm tại: Trình bao bọc TLS / SSL cho các đối tượng ổ cắm - Xác minh chứng chỉ .


Từ điểm đầu tiên của bạn, làm cách nào để chỉ định HTTP bằng lệnh pip?
rayzinnz

1
@rayzinnz Tôi đã thêm ví dụ.
kenorb

16

Đặt thời gian và ngày chính xác!

Đối với tôi, nó phát hiện ra rằng ngày và giờ của tôi bị định cấu hình sai trên Raspberry Pi. Kết quả là tất cả các kết nối SSL và HTTPS đều thất bại, sử dụng máy chủ https://files.pythonhosted.org/ .

Cập nhật nó như thế này:

sudo date -s "Wed Thu  23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata

Hoặc trực tiếp với thời gian của Google:

Tham khảo: https://superuser.com/a/635024/935136

sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
sudo dpkg-reconfigure tzdata

Đã khiến tôi phát điên trong nhiều giờ - cảm ơn vì điều đó. Thời gian PI đã hết 10 ngày đối với tôi gây ra (nó sẽ xuất hiện) tất cả các loại lỗi trong quá trình cài đặt pip.
SteveJ

13

Gần đây tôi gặp phải vấn đề này do bộ lọc nội dung web của công ty tôi sử dụng Tổ chức phát hành chứng chỉ riêng để có thể lọc lưu lượng SSL. PIP dường như không sử dụng chứng chỉ CA của hệ thống trong trường hợp của tôi, gây ra lỗi mà bạn đề cập. Việc hạ cấp PIP xuống phiên bản 1.2.1 đã trình bày một loạt các vấn đề của riêng nó sau này, vì vậy tôi đã quay lại phiên bản gốc đi kèm với Python 3.4.

Cách giải quyết của tôi khá đơn giản: sử dụng easy_install. Hoặc nó không kiểm tra các certs (như phiên bản PIP cũ) hoặc nó biết sử dụng các certs hệ thống vì nó hoạt động mọi lúc đối với tôi và tôi vẫn có thể sử dụng PIP để gỡ cài đặt các gói được cài đặt với easy_install.

Nếu điều đó không hoạt động và bạn có thể truy cập vào mạng hoặc máy tính không có vấn đề, bạn luôn có thể thiết lập máy chủ PyPI cá nhân của riêng mình: làm thế nào để tạo chỉ mục kho lưu trữ pypi riêng mà không cần gương?

Tôi gần như đã làm điều đó cho đến khi tôi cố gắng sử dụng easy_installnhư một nỗ lực cuối cùng.


Vấn đề tương tự ở đây. Một cách giải quyết khác là xuất chứng chỉ gốc của công ty dưới dạng tệp và yêu pipcầu sử dụng nó với --cert MyCompanyRootCA.crt.
glibdud

10

Bạn có thể cố gắng bỏ qua lỗi SSL bằng cách sử dụng http thay vì https. Tất nhiên điều này không tối ưu về mặt bảo mật , nhưng nếu bạn đang vội thì nên thực hiện thủ thuật:

pip install --index-url=http://pypi.python.org/simple/ linkchecker

1
Tôi đã mong đợi đề nghị của bạn để làm việc. Thật điên rồ, tôi đã nhận được chính xác các lỗi tương tự bao gồm lỗi đầu tiênCould not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Jeremy Cook

3
Ok, vì vậy, một cách giải quyết khác là tải xuống gói tar.gz có sẵn tại đây pypi.python.org/pypi/LinkChecker/9.3 và cài đặt nó với: pip cài đặt LinkChecker-9.3.tar.gz
Augusto Destrero

3
Nhưng nếu gói bạn muốn cài đặt có các phụ thuộc bạn phải tải xuống và cài đặt tất cả các phụ thuộc, nếu chúng có nhiều thì điều này có thể trở thành một cơn ác mộng.
Augusto Destrero

1
Đối với tôi, tôi đã phải tải về whl (cho trường hợp của tôi pyserial) và cài đặt nó. Điều này đã chọn ra các phụ thuộc mà tar.gz không thu thập được không ai trong số này làm việc: 1. CAcert.pem --cert 2. xuất khẩu giấy chứng nhận công ty, chuyển sang PEM 3. easy_install trong Cygwin 4. --trusted-host
charo

1
Thời gian dài hoạt động kể từ năm 2017 - Truy cập HTTP đã bị cắt đứt hoàn toàn. mail.python.org/pipermail/distutils-sig/2017-Oc/10/iêu
gbtimmon

8

Các câu trả lời để sử dụng

pip install --trusted-host pypi.python.org <package>

công việc. Nhưng bạn sẽ phải kiểm tra xem có chuyển hướng hay bộ nhớ cache nào không pip. Trên Windows 7 pip 9.0.1, tôi phải chạy

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \
  <package>

Bạn có thể tìm thấy những thứ này với cờ verbose.


7

Tôi đã cài đặt pip 1.2.1 với easy_install và nâng cấp lên phiên bản mới nhất của pip (6.0.7 tại thời điểm đó) có thể cài đặt các gói trong trường hợp của tôi.

easy_install pip==1.2.1
pip install --upgrade pip

7

Bạn có 4 tùy chọn:

Sử dụng chứng chỉ làm tham số

$ pip install --cert /path/to/mycertificate.crt linkchecker

Sử dụng chứng chỉ trong pip.conf

Tạo tập tin này:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

và thêm các dòng này:

[global]
cert = /path/to/mycertificate.crt

Bỏ qua chứng chỉ và sử dụng HTTP

$ pip install --trusted-host pypi.python.org linkchecker

Bỏ qua chứng chỉ và sử dụng HTTP trong pip.conf

Tạo tập tin này:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

và thêm các dòng này:

[global]
trusted-host = pypi.python.org

Nguồn


6

Đầu tiên,

    pip install --trusted-host pypi.python.org <package name>

đã không làm việc cho tôi. Tôi liên tục nhận được lỗi CERTIFICATE_VERIFY_FAILED. Tuy nhiên, tôi nhận thấy trong các thông báo lỗi rằng họ đã tham chiếu trang web 'pypi.org'. Vì vậy, tôi đã sử dụng tên này làm tên máy chủ đáng tin cậy thay vì pypi.python.org. Điều đó gần như đã đưa tôi đến đó; tải vẫn không thành công với CERTIFICATE_VERIFY_FAILED, nhưng tại một thời điểm sau. Tìm tài liệu tham khảo cho trang web bị lỗi, tôi đã đưa nó vào như một máy chủ đáng tin cậy. Điều cuối cùng làm việc cho tôi là:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>

5

Tôi không chắc điều này có liên quan hay không, nhưng tôi đã gặp một vấn đề tương tự đã được khắc phục bằng cách sao chép các tệp này từ Anaconda3 / Library / bin sang Anaconda3 / DLL:

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll


Với Anaconda 2019.03 tôi đã sao chép các tệp sau từ <thư mục Anaconda3> / Library / bin sang <Anaconda3> / DLLs libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssh2.dll libssl-1_1-x64.dll 1_1-x64.pdb Sau đó, tôi thêm lỗi ConnectTimeout, do đó, đã cập nhật cấu hình proxy .condarc
MordicusEtCubitus

Làm. Đàn ông là GENIUS! Tôi đã chuyển vùng các diễn đàn trong 1,5 giờ, chỉ để tìm giải pháp đơn giản và bị đánh giá thấp này.
ivan866

4

Có cùng một vấn đề khi thử pip install ftputilvới ActivePython 2.7.8, ActivePython 3.4.1 và "stock" Python 3.4.2 trên Windows 7 Enterprise 64 bit. Tất cả các lần thử đều thất bại với cùng một lỗi như OP.

Đã khắc phục sự cố cho Python 3.4.2 bằng cách hạ cấp xuống pip 1.2.1: easy_install pip==1.2.1(xem https://stackoverflow.com/a/16370731/234235 ). Sửa lỗi tương tự cũng hoạt động cho ActivePython 2.7.8.

Lỗi, được báo cáo vào tháng 3 năm 2013, vẫn đang mở: https://github.com/pypa/pip/issues/829 .


Cái này cũng có tác dụng với tôi. Mặc dù có vẻ như đó là một ý tưởng tồi ở nơi đầu tiên hạ cấp xuống phiên bản cũ hơn của pip, tôi đã xử lý các gói django cũ để phiên bản pip cũ thực sự khớp với các gói khác.
mknaf

Vấn đề 829 hiện đang đóng cửa.
Ortomala Lokni

3

Không có gì trên trang này hoạt động với tôi cho đến khi tôi sử dụng tùy chọn --verbose để thấy rằng nó muốn truy cập files.txtthonhosted.org thay vì pypi.python.org:

pip install --trusted-host files.pythonhosted.org <package_name>

Vì vậy, hãy kiểm tra URL mà nó thực sự không thành công thông qua tùy chọn --verbose.


2

Tôi đã giải quyết vấn đề này bằng cách xóa pip của mình và cài đặt phiên bản cũ hơn của pip: https://pypi.python.org/pypi/pip/1.2.1


Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
apomene

@apomene OP phải làm thế nào include the essential parts of the answer herevì đây là liên kết đến tệp nhị phân ...?
Thomas Ayoub

@ThomasAyoub, tôi tin rằng bạn đã biết, thông báo trên được tự động điền từ SO, khi gắn cờ một câu trả lời là câu trả lời liên kết duy nhất
apomene

@apomene không trả lời câu hỏi của tôi, tôi vẫn không thấy OP có thể / nên thêm gì?
Thomas Ayoub

1
@ThomasAyoub, Để giải thích thêm, nhận xét của tôi (SO) chỉ ra rằng câu hỏi đó chỉ ngắn gọn và liên kết, có nghĩa là nó tốt hơn có thể là một nhận xét. Ý định của tôi không phải là tuyên bố rõ ràng rằng OP nên thêm chi tiết lấy lại liên kết, mà là chi tiết về lý do tại sao điều này trả lời câu hỏi.
apomene

2

Bạn có thể thử điều này để bỏ qua "https":

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]

1
nếu bạn thậm chí có vấn đề khác với phiên bản pip, bạn có thể thử điều này pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns

2

Một giải pháp ( cho Windows ) là tạo một tệp được gọi pip.initrên %AppData%\pip\thư mục (tạo thư mục nếu nó không tồn tại) và chèn các chi tiết sau:

[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port

... và sau đó chúng ta có thể thực hiện hướng dẫn cài đặt:

pip3 install PyQt5

Một tùy chọn khác là cài đặt gói bằng cách sử dụng đối số cho proxy và chứng chỉ ...

$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
   --cert C:/certs/python_root.pem PyQt5

Để chuyển đổi các *.certệp chứng chỉ sang *.pemđịnh dạng được yêu cầu, hãy thực hiện theo hướng dẫn sau:

$ openssl x509 -inform der -in python_root.cer -out python_root.pem

Hy vọng điều này sẽ giúp được ai đó!


1
Đối với các hệ điều hành khác, hãy xem câu trả lời của Alex-Antoine Fortin
Dinei

Không cần proxy, chỉ cần chứng chỉ. Tôi đã chạy; pip3.6 config set global.cert '/<path>/server.crt'
avatarofhope2

2

Trong trường hợp của tôi, đó là do chứng chỉ SSL được ký bởi CA nội bộ của công ty tôi. Sử dụng cách giải quyết như pip --certkhông giúp được gì, nhưng gói sau đã làm:

pip install pip_system_certs

Xem: https://pypi.org/project/pip-system-certs/

Gói này vá pip và yêu cầu trong thời gian chạy để sử dụng chứng chỉ từ cửa hàng hệ thống mặc định (chứ không phải là gói certs ca).

Điều này sẽ cho phép pip xác minh các kết nối tls / ssl đến các máy chủ mà chứng chỉ được tin cậy bởi cài đặt hệ thống của bạn.


1
có vẻ như cần phải cài đặt pip_sysem_certs để vô hiệu hóa lỗi [SSL: CERTIFICATE_VERIFY_FAILED], vấn đề là, khi cố gắng cài đặt nó đã gặp lỗi [SSL: CERTIFICATE_VERIFY_FAILED] ...
athos

Điều này có thể đã là một giải pháp tại một số thời điểm, nhưng pip_system_certsđã phá vỡ hoàn toàn môi trường Python của tôi và vì lý do đó, đây không phải là một câu trả lời tốt. Không cài đặt pip_system_certs. Xem stackoverflow.com/questions/27835619/ cấp để biết thêm thông tin.
h0r53

1

Đối với tôi điều này là do trước đây tôi đang chạy tập lệnh đặt proxy (cho fiddler), mở lại bàn điều khiển hoặc khởi động lại để khắc phục sự cố.


Fiddler có thể được bỏ qua bằng cách đặt "Giải mã lưu lượng HTTPS" thành "... chỉ từ trình duyệt" trong Công cụ | Tùy chọn. Điều này đã khắc phục vấn đề cho tôi.
cháu trai

1

Gần đây tôi gặp phải vấn đề tương tự trong python 3.6 với visual studio 2015. Sau khi trải qua 2 ngày, tôi đã có được giải pháp và nó hoạt động tốt với tôi.

Tôi đã gặp lỗi dưới đây trong khi thử cài đặt numpy bằng pip hoặc từ studio trực quan Thu thập numpy Không thể tìm nạp URL https://pypi.python.org/simple/numpy/ : Đã xảy ra sự cố khi xác nhận chứng chỉ ssl: [SSL: CERTIFICATE_VERIFY_FAILED] xác nhận chứng chỉ không thành công (_ssl.c: 748) - bỏ qua Không thể tìm thấy phiên bản thỏa mãn yêu cầu numpy (từ các phiên bản :) Không tìm thấy phân phối phù hợp cho numpy

Nghị quyết:

Dành cho hệ điều hành Windows

  1. mở -> "% appdata%" Tạo thư mục "pip" nếu không tồn tại.
  2. Trong thư mục pip tạo tập tin "pip.ini".
  3. Chỉnh sửa tệp và ghi
    [toàn cầu]
    Trusted-host = pypi.python.org Lưu và Đóng tệp. Bây giờ cài đặt bằng cách sử dụng pip / visual studio nó hoạt động tốt.

1

Trong trường hợp của tôi, tôi đã chạy Python trong hình ảnh docker alpine tối thiểu. Nó bị thiếu chứng chỉ CA gốc. Sửa chữa:

apk update && apk add ca-certificates


1

Vaulstein trả lời giúp tôi.

Tôi không tìm thấy tập tin pip.ini ở bất cứ đâu trên máy tính của tôi. Vì vậy, đã làm như sau.

  1. Đi đến thư mục AppData. Bạn có thể lấy thư mục appdata bằng cách mở dấu nhắc lệnh và gõ echo% AppData%

Vị trí AppData sử dụng dấu nhắc lệnh

Hoặc chỉ cần gõ% AppData% trong windows explorer.

Vị trí AppData trong windows explorer

  1. Tạo một thư mục gọi là pip bên trong thư mục appdata đó.

  2. Trong thư mục pip mà bạn vừa tạo, hãy tạo một tệp văn bản đơn giản có tên là pip.ini

  3. Vượt qua các cài đặt cấu hình sau trong tệp đó bằng trình chỉnh sửa đơn giản mà bạn chọn.

tập tin pip.ini:

[list]
format=columns

[global]
trusted-host = pypi.python.org pypi.org

Bây giờ bạn nên đi tốt.


1

Tôi phải đối mặt với một vấn đề tương tự. Giải pháp hiệu quả với tôi 1) gỡ cài đặt python 2.7 2) xóa thư mục python27 3) cài đặt lại python mới nhất


0

Đối với tôi không có phương pháp được đề xuất nào hoạt động - sử dụng cert, HTTP, máy chủ tin cậy.

Trong trường hợp của tôi, chuyển sang một phiên bản khác của gói đã hoạt động (paho-mqtt 1.3.1 thay vì paho-mqtt 1.3.0 trong trường hợp này).

Có vẻ như vấn đề là cụ thể cho phiên bản gói đó.


0

Bạn có thể gặp vấn đề này nếu một số chứng chỉ bị thiếu trong hệ thống của bạn. Mở trên openuse cài đặt ca-chứng chỉ-mozilla

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.