Last Updated on 2023-03-19 by Clay
問題描述
今天我想要久違地使用 ChatGPT 幫我重新建構我以前寫的音樂播放器,但是因為私心想要使用開源免費的 PySide6 來取代當初使用的 PyQt5 模組,所以嘗試著在筆電上重新安裝了 PySide6 套件。
而在使用 pip3 install PySide6
的過程中,我遭遇了以下錯誤:
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool
並且這個問題並不是指令一下,問題就會發生;通常是下載到一半(因為下載速度很慢),我回來電腦前驚覺已經發生了這樣的問題。
我以前是曾經安裝過 PySide6 的,並且過程中毫無問題發生。
問題發生原因
這個錯誤發生的原因可能是 pip
在安裝套件時,與 PyPI 伺服器建立連線的過程中遇到了讀取超時。這可能是因為網絡不穩定、連線速度較慢、伺服器負載過重等因素導致。當連線超過預設的等待時間,pip
會自動中斷下載並提示 ReadTimeoutError
。
解決方法
方法一:調整 timeout 參數
為了解決這個問題,首先可以嘗試調整 pip
的 timeout 參數。這可以通過在命令行中添加 --default-timeout
選項來實現。例如,將 timeout 值設置為 100 秒:
pip3 install PySide6 --default-timeout=100
這樣可以讓 pip
在安裝套件時使用更長的 timeout 數值,降低讀取超時的可能性。我在這裡是把 100 秒調整到了 1000,因為我即使設定 100 秒也仍然超時。
方法二:更換 PyPI 鏡像源
另一種解決方法是更換 PyPI 鏡像源,可能會提高下載速度並避免超時錯誤。我們可以使用以下命令指定鏡像源:
pip3 install PySide6 -i https://pypi.tuna.tsinghua.edu.cn/simple
不過要注意的是,上述所採用的是中國清華大學的 PyPI 鏡像源,我們應該可以根據自己的地理位置選擇其他適合的鏡像源,並且我們台灣的開發者可能比較不相信對岸的套件來源,是否要使用這邊的鏡像源就要斟酌一下了。
References
- stackoverflow - HTTPSConnectionPool(host='pypi.python.org', port=443) with ...
- GitHub - [BUG] pip._vendor.urllib3.exceptions.ReadTimeoutError ...