Khi làm việc với OpenAI API, nhiều người gặp phải lỗi khi nhập thư viện openai
, với thông báo lỗi rằng urllib3 v2.0 chỉ hỗ trợ OpenSSL 1.1.1 trở lên, trong khi thư viện ‘ssl’ hiện tại được biên dịch với LibreSSL 2.8.3. Điều này khiến cho quá trình thực thi mã dừng lại, làm gián đoạn quá trình sử dụng API.
Thông báo lỗi:
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3
Nguyên nhân của vấn đề
Lý do chính là phiên bản urllib3 bạn đang sử dụng (v2.0) yêu cầu OpenSSL 1.1.1+ do nó sử dụng một số tính năng mới của OpenSSL 1.1.1. Tuy nhiên, môi trường hiện tại của bạn đang có phiên bản của thư viện ‘ssl’ được biên dịch với LibreSSL 2.8.3, một phiên bản không tương thích với yêu cầu của urllib3.
Giải pháp khắc phục
1. Hạ cấp phiên bản urllib3
Giải pháp phổ biến nhất và dễ thực hiện là hạ cấp phiên bản urllib3
xuống phiên bản cũ hơn, tương thích với LibreSSL.
Chạy lệnh sau để gỡ cài đặt phiên bản hiện tại của urllib3 và cài đặt phiên bản 1.26.6:
pip uninstall urllib3 pip install urllib3==1.26.6
Đây là cách hạ cấp urllib3 về phiên bản không yêu cầu OpenSSL 1.1.1, giúp bạn khắc phục lỗi mà không cần thay đổi cấu hình hệ thống quá nhiều.
2. Cài đặt OpenSSL 1.1.1+ trên máy
Nếu bạn muốn sử dụng phiên bản mới của urllib3, bạn cần đảm bảo rằng hệ thống của mình sử dụng OpenSSL 1.1.1 trở lên.
Trên MacOS, bạn có thể sử dụng Homebrew để cài đặt OpenSSL 1.1.1:
brew install openssl@1.1
Sau khi cài đặt OpenSSL, bạn cần phải chắc chắn rằng Python được biên dịch lại để sử dụng phiên bản OpenSSL này. Điều này có thể yêu cầu bạn cài đặt lại Python hoặc biên dịch lại Python từ mã nguồn với OpenSSL 1.1.1.
3. Cập nhật Python và môi trường ảo
Một số người dùng đã báo cáo rằng việc nâng cấp Python lên phiên bản 3.11 có thể giải quyết vấn đề này. Bạn có thể tạo môi trường Python mới với pipenv hoặc venv và sử dụng phiên bản Python mới hơn:
pipenv install --python 3.11
Hoặc nếu bạn đang sử dụng venv:
python3 -m venv myenv source myenv/bin/activate pip install openai
4. Sử dụng PyCharm để quản lý các phiên bản thư viện
Nếu bạn đang sử dụng PyCharm, bạn có thể dễ dàng thay đổi phiên bản của urllib3
qua giao diện người dùng.
- Ở góc dưới bên phải của PyCharm, chọn môi trường Python mà bạn đang sử dụng.
- Chọn Interpreter Settings.
- Tìm urllib3 trong danh sách các thư viện đã cài đặt.
- Chọn phiên bản cần cài đặt (ví dụ: 1.26.6) và nhấn Install Package.
Lỗi ImportError
liên quan đến sự không tương thích giữa urllib3 v2.0 và LibreSSL có thể dễ dàng được khắc phục bằng cách hạ cấp phiên bản của urllib3 hoặc nâng cấp OpenSSL. Nếu bạn cần sử dụng tính năng mới của urllib3, hãy cân nhắc nâng cấp hệ thống OpenSSL của bạn. Tuy nhiên, nếu không có yêu cầu bắt buộc, việc hạ cấp urllib3 có thể là giải pháp nhanh và dễ dàng nhất.