Lỗi proxy PyCharm: đọc đúng thông báo của pip, Git và requests
Lỗi proxy PyCharm hiếm khi hiện đúng chữ "proxy". Thường anh em thấy pip báo không tìm được gói, Git báo không truy cập được kho, hoặc chương trình Python báo lỗi chứng chỉ. ProxyVN chạy thật pip 25.0.1, Git 2.55 và requests 2.34 qua proxy tự dựng có mật khẩu để lấy nguyên văn từng thông báo. Bài là bảng tra từ thông báo lỗi tới nguyên nhân và cách sửa.
Lỗi proxy PyCharm thường gặp và bảng tra nhanh
Bài này là phần chẩn đoán đi kèm bài PyCharm proxy, nơi đã hướng dẫn cài proxy cho IDE, pip, Git và terminal. Ở đây không lặp lại cách cài, chỉ tập trung vào việc đọc lỗi.
Bảng tra từ thông báo lỗi
Thông báo anh em thấy |
Nguyên nhân thật |
Mục cần đọc |
|---|---|---|
No matching distribution found, from versions: none |
pip không tới được kho gói, thường do proxy |
pip che lỗi proxy |
Tunnel connection failed: 407 Proxy Authentication Required |
Sai hoặc thiếu tài khoản proxy |
Lỗi 407 |
[WinError 10061] No connection could be made |
Sai cổng hoặc proxy không chạy |
Không tới được proxy |
[Errno 11001] getaddrinfo failed |
Mật khẩu có @ hoặc # chưa mã hóa |
Ký tự đặc biệt |
The handshake operation timed out |
Ghi https:// cho proxy HTTP |
Sai giao thức |
Missing dependencies for SOCKS support |
Dùng socks5:// mà thiếu thư viện PySocks |
SOCKS |
InvalidProxyURL: Please check proxy URL |
Thiếu http:// ở đầu địa chỉ proxy |
Sai giao thức |
CERTIFICATE_VERIFY_FAILED |
Proxy công ty giải mã HTTPS |
Chứng chỉ |
CONNECT tunnel failed, response 407 |
Git sai tài khoản proxy |
Git |
Ba câu hỏi trước khi sửa
Câu thứ nhất: lỗi xảy ra ở đâu, trong IDE, trong pip, trong Git hay trong chương trình anh em viết. Bốn chỗ này đọc proxy từ bốn nơi khác nhau. PyCharm không tự truyền proxy của IDE sang pip hay chương trình đang chạy.
Câu thứ hai: proxy có chạy ngoài PyCharm không. Một lệnh curl từ cùng máy trả lời câu này trong vài giây. Proxy không chạy với curl thì sửa trong PyCharm cũng vô ích.
Câu thứ ba: lỗi mới xuất hiện hay đã có từ trước. Lỗi mới xuất hiện sau khi đổi mạng, đổi mật khẩu proxy hoặc cập nhật PyCharm thường chỉ ra ngay nguyên nhân.
Môi trường tái hiện lỗi proxy PyCharm
Cách mình thử
Máy thử chạy Windows 10, Python 3.12, pip 25.0.1, requests 2.34.2, Git 2.55.0 dùng Schannel. Mình dựng một proxy HTTP và một proxy SOCKS5 ngay trên máy, có mật khẩu p@ss#2026, ghi nhật ký mọi kết nối. Mỗi tình huống chạy lệnh pip download một gói nhỏ hoặc git ls-remote tới kho thật trên GitHub, đổi đúng một thông số mỗi lần.
Mình không có PyCharm trên máy thử. Những gì liên quan tới giao diện IDE lấy theo trang trợ giúp HTTP Proxy của PyCharm 2026.2, cập nhật ngày 17/8/2026. Phần pip, Git và requests là kết quả chạy thật, giống hệt những gì anh em thấy trong cửa sổ Terminal và Python Packages của PyCharm.
Vì sao chạy lệnh thay vì bấm nút
Ô cài gói trong PyCharm gọi pip phía sau. Khi lỗi, IDE thường chỉ hiện một dòng tóm tắt. Chạy đúng lệnh pip trong Terminal của PyCharm cho ra toàn bộ thông báo, và đó là chỗ có nguyên nhân thật. Mọi lệnh trong bài đều chạy được trong Terminal tích hợp.
Lỗi proxy PyCharm do pip che mất nguyên nhân
No matching distribution found không phải lỗi tên gói
Đây là phát hiện quan trọng nhất trong lần thử. Mình chạy pip với tham số --retries 0 qua proxy sai cổng, sai mật khẩu, mật khẩu chưa mã hóa, và ghi https:// cho proxy HTTP. Cả bốn trường hợp, pip đều chỉ in hai dòng:
ERROR: Could not find a version that satisfies the requirement six==1.16.0 (from versions: none)
ERROR: No matching distribution found for six==1.16.0
Không có chữ proxy nào. Người đọc dễ nghĩ gói không tồn tại hoặc sai phiên bản Python, rồi đi sửa nhầm chỗ. Chữ "from versions: none" là dấu hiệu: pip không lấy được danh sách phiên bản nào, tức là không nói chuyện được với kho gói.
Cách làm hiện nguyên nhân thật
Với --retries 1, pip in thêm một dòng WARNING trước khi thử lại, và dòng đó chứa nguyên nhân. Ví dụ với sai mật khẩu:
WARNING: Retrying (Retry(total=0, ...)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))': /simple/six/
Mặc định pip thử lại 5 lần, nên dòng WARNING thường có sẵn nhưng bị trôi lên trên. Khi gặp "No matching distribution", cuộn lên tìm dòng Retrying đầu tiên. Thêm -v vào lệnh pip để in chi tiết hơn, gồm cả địa chỉ proxy pip đang dùng.
pip dùng proxy nào
Theo tài liệu cấu hình của pip, pip lấy tùy chọn từ dòng lệnh, biến môi trường dạng PIP_ và file cấu hình như pip.ini. Với proxy, nghĩa là tham số --proxy, mục proxy trong pip.ini, hoặc biến môi trường HTTPS_PROXY mà thư viện mạng của pip đọc. Mình thử đặt HTTPS_PROXY với mật khẩu sai, pip báo đúng lỗi 407, xác nhận pip đọc biến này. Khi đặt thêm NO_PROXY=*, pip bỏ qua biến HTTPS_PROXY và tải thẳng thành công. Nhưng khi truyền --proxy trên dòng lệnh, NO_PROXY=* không có tác dụng, pip vẫn đi proxy và vẫn báo 407.
Nghĩa là --proxy thắng mọi thứ. Nếu PyCharm hoặc một file cấu hình nào đó đã thêm --proxy vào lệnh pip, đổi biến môi trường không giải quyết được. Lệnh pip config list cho biết pip đang đọc cấu hình proxy từ file nào.
Một file pip.ini gọn cho máy trong mạng công ty, có kho gói nội bộ đi thẳng:
[global]
proxy = http://user1:p%40ss%232026@proxy.example.com:8080
cert = C:\certs\congty-ca.pem
timeout = 30
retries = 2
trusted-host =
Dòng retries = 2 giữ lại dòng Retrying để còn đọc được nguyên nhân khi lỗi. Dòng cert trỏ tới chứng chỉ công ty nếu proxy giải mã HTTPS, phần sau giải thích. Để trống trusted-host, không tắt kiểm tra chứng chỉ.
Kho gói nội bộ không nên đi qua proxy
Nhiều công ty có kho gói riêng kiểu Nexus, Artifactory hay devpi trong mạng nội bộ. Nếu pip đi qua proxy ra ngoài cho mọi địa chỉ, yêu cầu tới kho nội bộ cũng bị đẩy ra proxy. Proxy không thấy máy nội bộ, trả lỗi 502 hoặc 503, pip lại báo "No matching distribution found". Đặt NO_PROXY với tên miền kho nội bộ, ví dụ NO_PROXY=.noibo.local,localhost,127.0.0.1, và không dùng tham số proxy trong pip.ini cho trường hợp này, vì như đã thử, tham số proxy của pip thắng NO_PROXY.

No matching distribution có thể là lỗi proxy
Lỗi proxy PyCharm khi không tới được proxy
WinError 10061: sai cổng hoặc proxy đã tắt
Với cổng proxy sai, dòng Retrying ghi "Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it". Máy của anh em gõ cửa đúng địa chỉ nhưng không ai mở. Kiểm cổng nhà cung cấp gửi, kiểm proxy còn hạn, kiểm phần mềm proxy cục bộ nếu có.
Trên macOS và Linux, cùng lỗi này hiện là "Connection refused" kèm mã 61 hoặc 111. Ý nghĩa giống nhau.
Hết giờ khi kết nối proxy
Nếu proxy ở xa hoặc tường lửa nuốt gói tin, lỗi không phải bị từ chối mà là hết giờ, kèm chữ ConnectTimeoutError. pip mặc định chờ 15 giây mỗi lần. Tham số --timeout đặt thời gian chờ, nhưng tăng thời gian chờ chỉ có ích khi proxy chậm thật chứ không phải chết. Cách phân biệt nhanh: chạy lại lệnh curl tới https://pypi.org qua cùng proxy, đo thời gian bằng tham số -w. Proxy trả lời sau vài giây là chậm, có thể tăng thời gian chờ. Proxy không trả lời sau 30 giây là chết hoặc bị tường lửa chặn, phải đổi proxy hoặc hỏi bộ phận IT về cổng ra ngoài.
Proxy của IDE không phải proxy của pip
Lỗi hay gặp nhất trong mạng công ty: anh em cài proxy ở Settings, Appearance & Behavior, System Settings, HTTP Proxy, bấm Check Connection thấy chạy, nhưng cài gói vẫn lỗi. Trang trợ giúp của PyCharm ghi rõ thiết lập này dành cho việc của IDE như tải plugin, kiểm giấy phép, đồng bộ cài đặt. pip chạy trong môi trường Python riêng, cần proxy riêng.
Lỗi proxy PyCharm 407 và hai lớp xác thực
407 với pip
Dòng "Tunnel connection failed: 407 Proxy Authentication Required" nghĩa là proxy nhận kết nối nhưng không chấp nhận tài khoản. Hoặc anh em chưa ghi tài khoản, hoặc tài khoản sai, hoặc proxy chỉ cho phép theo IP mà IP máy chưa được thêm vào danh sách. Chữ Tunnel cho biết pip đang mở đường hầm CONNECT tới kho gói HTTPS.
407 khác 401 và 403
407 là proxy từ chối. 401 là chính kho gói từ chối, thường gặp với kho gói riêng của công ty cần đăng nhập. 403 có thể là proxy chặn tên miền đó theo chính sách. Ba mã này chỉ tới ba nơi khác nhau. Đọc đúng con số trước khi sửa mật khẩu.
Hộp thoại mật khẩu proxy của IDE
Trong IDE, proxy có tài khoản hiện hộp thoại hỏi mật khẩu. Trang trợ giúp ghi rằng nếu không đánh dấu Remember, PyCharm hỏi lại mỗi lần khởi động. Nút Clear Passwords ở chế độ Auto-detect xóa mật khẩu đã lưu, hữu ích khi mật khẩu proxy vừa đổi mà IDE vẫn gửi mật khẩu cũ. Bài PyCharm proxy có phần riêng về hộp thoại hiện liên tục.
Proxy NTLM của công ty
Một số proxy công ty dùng xác thực NTLM hoặc Kerberos của Windows. pip và requests không tự làm được kiểu xác thực này. Lỗi hiện vẫn là 407 dù mật khẩu đúng. Cách phổ biến là chạy một proxy trung gian cục bộ như CNTLM hoặc Px, rồi trỏ pip về 127.0.0.1 không mật khẩu. Bài xác thực proxy bằng IP whitelist hay user password giải thích các kiểu xác thực.
Lỗi proxy PyCharm do ký tự đặc biệt và sai giao thức
getaddrinfo failed khi mật khẩu có @ hoặc #
Mật khẩu thử là p@ss#2026. Ghi thẳng vào địa chỉ http://user1:p@ss#[email protected]:8902, pip báo "[Errno 11001] getaddrinfo failed". Lý do: dấu @ đầu tiên kết thúc phần tài khoản, phần sau bị hiểu là tên máy proxy, và tên máy kiểu "ss#[email protected]" thì không tra được.
Cách sửa là mã hóa phần trăm: @ thành %40, # thành %23, dấu hai chấm trong mật khẩu thành %3A. Địa chỉ đúng là http://user1:p%40ss%[email protected]:8902. Đoạn Python dưới mã hóa giúp:
from urllib.parse import quote
user = "user1"
password = "p@ss#2026"
print(f"http://{quote(user, safe='')}:{quote(password, safe='')}@127.0.0.1:8902")
Bài định dạng proxy có thêm cách đổi chuỗi ip:port:user:pass sang dạng URL.
handshake operation timed out khi ghi https://
Nhiều người ghi https:// ở đầu địa chỉ proxy vì nghĩ kho gói là HTTPS thì proxy cũng phải HTTPS. Với proxy HTTP thường, cách ghi này làm pip bắt tay TLS với chính máy proxy. Máy proxy không trả lời bắt tay, pip chờ rồi báo "TimeoutError('_ssl.c:993: The handshake operation timed out')". Sửa bằng cách ghi http:// cho proxy, dù đích là HTTPS. Chỉ ghi https:// khi nhà cung cấp nói rõ proxy nhận kết nối TLS.
InvalidProxyURL khi thiếu tiền tố
Ghi thiếu tiền tố, kiểu user1:p%40ss%[email protected]:8902, pip dừng ngay với "InvalidProxyURL: Please check proxy URL. It is malformed and could be missing the host." Lỗi này ít gây hiểu nhầm vì nói thẳng địa chỉ proxy sai định dạng. Thêm http:// ở đầu là xong.
Missing dependencies for SOCKS support
Ghi socks5:// cho pip, lỗi là "InvalidSchema: Missing dependencies for SOCKS support." Thư viện requests mà pip dùng cần gói PySocks để nói chuyện SOCKS. Máy thử không có PySocks nên lỗi ngay. Cài PySocks bằng pip install pysocks thì cần mạng, nên với máy chỉ có proxy SOCKS, cách nhanh hơn là xin nhà cung cấp cổng HTTP hoặc tải file whl của PySocks về cài tay. Bài proxy HTTP và SOCKS5 so sánh hai loại.

Mã hóa @ và # trong mật khẩu proxy
Lỗi proxy PyCharm về chứng chỉ khi proxy công ty giải mã HTTPS
Cùng một máy, pip chạy mà chương trình lỗi
Proxy công ty có thể mở gói HTTPS ra soi rồi ký lại bằng chứng chỉ riêng. Mình giả lập bằng một máy chủ HTTPS dùng chứng chỉ tự ký, rồi gọi bằng ba công cụ. Kết quả ba thông báo khác nhau:
- pip báo "A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider". Đây là câu của Windows, vì pip 25 kiểm chứng chỉ bằng kho của hệ điều hành.
- Git báo "schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)". Git dùng Schannel nên cũng tra kho của Windows.
- requests báo "CERTIFICATE_VERIFY_FAILED certificate verify failed: self-signed certificate". requests dùng bộ chứng chỉ riêng đi kèm gói certifi, không tra kho Windows.
Điều này giải thích một tình huống rất hay gặp. Bộ phận IT đã cài chứng chỉ công ty vào Windows, nên pip và Git trong PyCharm chạy bình thường. Nhưng chương trình anh em viết bằng requests lại báo CERTIFICATE_VERIFY_FAILED, vì certifi không biết chứng chỉ công ty.
Cách sửa đúng cho từng công cụ
Với pip, tham số --cert trỏ tới file chứng chỉ công ty dạng PEM. Mình thử --cert với chứng chỉ của máy chủ giả lập, pip qua được lớp kiểm chứng chỉ. Với requests, biến môi trường REQUESTS_CA_BUNDLE trỏ tới cùng file. Mình thử biến này, lỗi chứng chỉ không tin cậy biến mất, chỉ còn lỗi IP không khớp do chứng chỉ thử không khai báo IP, đúng như mong đợi.
set REQUESTS_CA_BUNDLE=C:\certs\congty-ca.pem
python -m pip install --cert C:\certs\congty-ca.pem requests
Trong PyCharm, đặt REQUESTS_CA_BUNDLE trong ô Environment variables của Run Configuration để chương trình chạy từ IDE nhận được. Một cách khác là gói truststore, cho Python dùng kho chứng chỉ của hệ điều hành giống pip.
Không tắt kiểm tra chứng chỉ
Các hướng dẫn trên mạng hay bảo thêm --trusted-host hoặc verify=False. Hai cách này tắt kiểm tra chứng chỉ, mở đường cho kẻ đứng giữa đọc và sửa gói tải về. Dùng file chứng chỉ của công ty mới là cách đúng.
Lỗi proxy PyCharm với Git
CONNECT tunnel failed, response 407
Git dùng proxy trong cấu hình http.proxy. Với mật khẩu sai, Git báo "fatal: unable to access 'https://github.com/git/git.git/': CONNECT tunnel failed, response 407". Chức năng Git trong PyCharm gọi Git của máy, nên thông báo trong cửa sổ Git của IDE cũng là câu này.
Failed to connect over proxy
Với cổng sai, Git báo "Failed to connect to github.com:443 over proxy 127.0.0.1 after 2112 ms: Could not connect to server". Câu này ghi cả đích lẫn proxy, rất dễ đọc. Con số mili giây cho biết lỗi xảy ra nhanh, tức bị từ chối, không phải hết giờ.
SOCKS5 với Git
Git nhận socks5h:// trong http.proxy và chạy được với proxy SOCKS5 có mật khẩu trong lần thử. Chữ h nghĩa là để proxy phân giải tên miền. Đây là điểm khác pip: Git dùng libcurl, có sẵn SOCKS, không cần cài thêm gì. Bài Git proxy có đủ cách cài.
Git lấy proxy từ đâu
Khi không có http.proxy trong cấu hình, Git dựa vào libcurl đọc biến môi trường https_proxy, http_proxy và all_proxy. Vì vậy cùng một kho, Git trong Terminal của PyCharm có thể đi proxy còn Git do IDE gọi lại đi thẳng, nếu biến môi trường chỉ có ở phiên Terminal. Lệnh git config --show-origin --get-all http.proxy cho biết proxy đang lấy từ file cấu hình nào, rất có ích khi máy có cả cấu hình chung lẫn cấu hình riêng của từng kho.
Muốn tắt proxy cho một kho nội bộ mà vẫn giữ proxy chung, dùng cấu hình theo địa chỉ: git config --global http.https://git.noibo.local/.proxy "" đặt proxy rỗng riêng cho máy đó.
Git qua SSH không đi proxy HTTP
Kho dùng địa chỉ [email protected] đi qua SSH, không đọc http.proxy. Nếu mạng chặn cổng 22, lỗi là hết giờ khi kết nối SSH, đổi proxy HTTP không có tác dụng. Cách xử lý là dùng địa chỉ HTTPS của kho hoặc cấu hình ProxyCommand cho SSH.
Lỗi proxy PyCharm trong IDE: Check Connection, PAC và plugin
Check Connection thành công nhưng plugin vẫn lỗi
Nút Check Connection mở hộp nhập một địa chỉ để thử qua proxy. Thử thành công chỉ chứng minh địa chỉ đó đi được. Kho plugin và máy chủ giấy phép có thể nằm trên tên miền khác bị proxy công ty chặn. Khi plugin không tải được, thử Check Connection với địa chỉ plugins.jetbrains.com.
File PAC có BOM không chạy
Trang trợ giúp có một ghi chú ít ai để ý: file PAC lưu dạng UTF-8 có BOM sẽ không chạy. Notepad trên Windows có thể lưu kèm BOM. Lưu lại file PAC dạng UTF-8 không BOM, rồi điền vào ô Automatic proxy configuration URL. Bài PAC proxy giải thích file PAC.
No proxy for ghi sai cú pháp
Ô No proxy for nhận nhiều máy cách nhau bằng dấu phẩy, dấu sao là ký tự đại diện. Ghi cách nhau bằng dấu chấm phẩy hay dấu gạch đứng theo thói quen từ công cụ khác sẽ làm danh sách không khớp. Kho gói nội bộ không được bỏ qua sẽ đi qua proxy và có thể bị chặn.
Nhật ký của IDE
Khi IDE báo lỗi mạng chung chung, mở Help, Show Log in Explorer để mở thư mục chứa file idea.log. Tìm các dòng có chữ proxy, 407 hay SSLHandshakeException. Nhật ký cho biết thành phần nào của IDE lỗi và lỗi gì.

pip, Git và requests tin chứng chỉ khác nhau
Lỗi proxy PyCharm với WSL, Docker và trình thông dịch từ xa
PyCharm cho chọn trình thông dịch nằm ngoài máy Windows: trong WSL, trong container Docker, hoặc trên máy chủ qua SSH. Mỗi nơi có mạng riêng, và đây là nguồn lỗi proxy khó đoán nhất vì cấu hình trên Windows không đi theo.
Trình thông dịch trong WSL
pip chạy trong WSL đọc biến môi trường của Linux, không đọc proxy của Windows hay của IDE. Lỗi hay gặp: anh em đặt HTTPS_PROXY=http://127.0.0.1:8080 vì proxy chạy trên Windows. Với WSL 2 ở chế độ mạng mặc định, 127.0.0.1 trong WSL là chính máy ảo Linux, không phải Windows. Kết nối bị từ chối, lỗi giống hệt trường hợp sai cổng.
Cách xử lý là trỏ tới địa chỉ IP của Windows nhìn từ WSL, hoặc bật chế độ mạng mirrored trong file .wslconfig để WSL dùng chung localhost với Windows. Phần mềm proxy trên Windows cũng phải cho phép kết nối từ ngoài localhost, nhiều phần mềm mặc định chỉ nghe ở 127.0.0.1.
Trình thông dịch trong Docker
Container khi chạy cần biến HTTP_PROXY, HTTPS_PROXY truyền vào, còn bước dựng ảnh cần proxy qua tham số build-arg. Hai bước này tách biệt: dựng ảnh thành công nhưng chạy container vẫn lỗi, hoặc ngược lại. Địa chỉ 127.0.0.1 trong container cũng không phải máy chủ, dùng host.docker.internal trên Docker Desktop. Bài proxy Docker có đủ các chỗ cấu hình.
Trình thông dịch qua SSH
Với trình thông dịch trên máy chủ từ xa, pip chạy trên máy chủ đó, dùng mạng của máy chủ. Proxy trên máy anh em không liên quan. Nếu máy chủ cần proxy để ra ngoài, đặt trong cấu hình pip của máy chủ. Khi đường tới máy chủ cần đi qua máy trung gian, đó là chuyện SSH, xem bài SSH ProxyJump là gì.
Cách nhận ra lỗi thuộc môi trường nào
Mở Terminal của PyCharm, chọn đúng loại phiên WSL, Docker hay SSH ứng với trình thông dịch, rồi chạy lệnh env để xem biến proxy có mặt không. Sau đó chạy lệnh pip download với --retries 1 như phần trên. Thông báo lỗi giống hệt trên Windows, chỉ khác chỗ phải sửa.
Script kiểm lỗi proxy PyCharm trước khi làm việc
Kiểm từng lớp
Đoạn Python dưới chạy được trong Terminal hoặc Python Console của PyCharm. Nó kiểm lần lượt: kết nối tới máy proxy, tài khoản proxy, rồi kho gói qua proxy, và in lớp nào lỗi. Chỉ dùng thư viện chuẩn của Python.
import base64, socket, sys
from urllib.parse import urlsplit, unquote
proxy = sys.argv[1]
u = urlsplit(proxy)
host, port = u.hostname, u.port or 8080
print("1. Mo ket noi toi proxy", host, port)
s = socket.create_connection((host, port), timeout=8)
tk = ""
if u.username:
raw = f"{unquote(u.username)}:{unquote(u.password or '')}".encode()
tk = "Proxy-Authorization: Basic " + base64.b64encode(raw).decode() + "\r\n"
print("2. Gui CONNECT pypi.org:443")
s.sendall(f"CONNECT pypi.org:443 HTTP/1.1\r\nHost: pypi.org:443\r\n{tk}\r\n".encode())
dong = s.recv(200).split(b"\r\n")[0].decode()
print(" Proxy tra:", dong)
if " 200 " in dong + " ":
print("3. Proxy va tai khoan dung, pip se toi duoc pypi.org")
elif " 407 " in dong:
print("3. Sai hoac thieu tai khoan proxy")
else:
print("3. Proxy chan dich nay hoac loi khac")
Chạy bằng python kiem_proxy.py "http://user1:p%40ss%[email protected]:8902". Ghi địa chỉ proxy giống hệt cách ghi cho pip, để script kiểm cả cách mã hóa mật khẩu.
Đọc kết quả
Lỗi ở bước 1 là chuyện mạng tới proxy: sai máy, sai cổng, proxy chết. Lỗi ở bước 2 với 407 là chuyện tài khoản. Bước 3 báo 200 mà pip vẫn lỗi thì vấn đề nằm ở chứng chỉ hoặc ở cấu hình pip đọc proxy khác. Cách chia lớp này đỡ phải đoán.
Chọn proxy để giảm lỗi ngay từ đầu
Với máy lập trình, proxy HTTP xác thực theo IP tránh được gần hết lỗi trong bài: không có mật khẩu để mã hóa sai, không cần PySocks, không có hộp thoại mật khẩu. Proxy nên cố định IP, độ trễ thấp, cho phép CONNECT tới cổng 443 của pypi.org, files.pythonhosted.org và github.com. Bài công cụ kiểm tra proxy có cách đo trước khi dùng.
Khi cần proxy HTTP ổn định cho máy lập trình, anh em có thể mua proxy tại trang chủ ProxyVN rồi chạy script trên trước khi cấu hình vào PyCharm.
Câu hỏi thường gặp về lỗi proxy PyCharm
Vì sao Terminal của PyCharm cài được gói mà ô Python Packages thì lỗi. Terminal có thể đã có biến HTTPS_PROXY từ hồ sơ người dùng, còn tiến trình IDE khởi động trước khi biến được đặt. Khởi động lại PyCharm sau khi đặt biến môi trường, hoặc khai báo proxy trong pip.ini để mọi cách gọi pip đều đọc được.
Đặt proxy trong pip.ini ở đâu. Trên Windows, file nằm ở thư mục pip trong AppData Roaming của người dùng. Lệnh pip config set global.proxy http://user:pass@host:port ghi giúp vào đúng file. Mật khẩu trong file là chữ thường, máy dùng chung thì cân nhắc.
Lỗi chỉ có ở môi trường ảo mới tạo, môi trường cũ vẫn chạy. Môi trường mới có thể dùng bản pip khác. pip từ bản 24.2 dùng kho chứng chỉ hệ điều hành, bản cũ hơn dùng certifi. Hai bản pip trên cùng máy có thể cho hai kết quả khác nhau với proxy giải mã HTTPS.
Conda có đọc proxy của pip không. Không. Conda đọc proxy trong file .condarc, mục proxy_servers. Lỗi conda qua proxy cần sửa ở đó.
Có nên tắt proxy khi làm việc ở nhà. Nếu proxy chỉ cần trong mạng công ty, dùng chế độ Auto-detect proxy settings của IDE và PAC của công ty, kết hợp NO_PROXY cho pip, thay vì bật tắt tay. Bật tắt tay dễ quên và là nguồn lỗi hay gặp.
Lỗi 407 chỉ xuất hiện buổi sáng, chiều lại hết. Kiểu lỗi theo giờ thường do proxy công ty dùng xác thực Kerberos hay phiên đăng nhập có hạn. Khi phiên hết hạn, proxy đòi xác thực lại mà pip không làm được. Báo bộ phận IT kèm thời điểm lỗi và dòng Retrying đầy đủ.
Có cần ghi proxy cho cả http và https không. Với pip, chỉ cần HTTPS_PROXY vì kho gói dùng HTTPS. Với chương trình gọi cả trang http, đặt thêm HTTP_PROXY. Thiếu biến nào thì loại địa chỉ đó đi thẳng, không báo lỗi proxy, dễ gây nhầm là proxy đang chạy.
Vì sao lỗi chỉ xảy ra với vài gói lớn. Gói lớn như torch hay tensorflow tải hàng trăm MB từ files.pythonhosted.org. Proxy có giới hạn dung lượng, giới hạn thời gian mỗi kết nối hoặc chặn tệp lớn sẽ cắt giữa chừng. Lỗi khi đó thường là ReadTimeoutError hoặc IncompleteRead, không phải 407. Tăng --timeout, hoặc dùng proxy không giới hạn băng thông cho máy lập trình.
PyCharm có hỗ trợ SOCKS có mật khẩu không. Trang HTTP Proxy cho chọn SOCKS và có ô tài khoản chung, nhưng trang trợ giúp không nói riêng về xác thực SOCKS. Với pip và requests, SOCKS cần thêm PySocks. Ưu tiên proxy HTTP cho đỡ rắc rối.

Kiểm proxy theo ba lớp
Lỗi proxy PyCharm: những điều cần nhớ
Lỗi proxy PyCharm hay ẩn sau "No matching distribution found", hãy tìm dòng Retrying để thấy 407, getaddrinfo hay handshake. Mã hóa @ và # trong mật khẩu, ghi http:// cho proxy, dùng file chứng chỉ thay vì tắt kiểm tra. Cần proxy ổn định, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.