Python遇到的坑–ValueError: check_hostname requires server_hostname

最近在新公司電腦上建置python環境的時候,現在python更新到3.9版本了,然後下載下來之後,配好環境變數,然後安裝requests外掛,然後寫一個簡單的程式碼發送請求,結果發現居然報錯了:

1
2
import requests
res = requests.get(url="https://blog.csdn.net/liboshi123/", verify=False)

執行上面的程式碼的時候,發現報了下面的錯誤:

1
2
  raise ValueError("check_hostname requires server_hostname")
ValueError: check_hostname requires server_hostname

報錯的原因:

這個其實跟選用的python版本的關係不大,主要原因是因為每次使用 pip install 命令下載外掛的時候,下載的都是最新的版本,例如下載requests外掛,它會自動的將依賴的urllib3這個外掛也安裝,然後依賴的外掛版本太高,就導致了這個報錯的問題。

所以說,一般遇到這種莫名其妙的問題的時候,可以先去看一下是不是外掛的問題導致的,解決措施就是 將urllib3外掛的版本降低就可以,當然,直接在安裝requests外掛的時候,選擇用低版本也可以解決這個問題。例如用下面的命令指定版本進行安裝:

1
2
3
pip install requests==2.20
或者使用下面的命令降低版本:
pip install urllib3==1.25.8

這種類似的問題,在使用一些框架的時候經常會遇到,例如有的小夥伴在學習django,然後照著別人部落格寫的文章操作,最後報錯,很有可能就是外掛的版本導致的。

另外,線上安裝外掛時,如果外掛下載過慢,或者報錯的話,可以在外掛的命令後面加上 -i 指定外掛安裝的源。

1
pip install 外掛名稱  -i http://mirrors.aliyun.com/pypi/simple

有時候報外掛找不到的話,就換一個源試試。

不想每次都指定源進行安裝的話 ,那就在使用者名稱下資料夾下建一個pip的資料夾,然後新建pip.ini的設定檔,寫入下面的內容就行(具體的源可以自己選擇):{建立這個設定檔的存放位置有很多種方式都可以,感興趣的可以自己去試試,例如pip所在目錄下,或者%APPDATA%目錄下去新建資料夾。}

1
2
3
4
[global]
index-url = http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com

另外,有些外掛透過上面的線上方式就是容易出現報錯的,可以嘗試用離線安裝的方式去安裝外掛,去網上下載whl格式的檔案進行安裝,例如,可以在下面的連結下下載:

whl格式外掛:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

pip install xxx.whl

官網下載外掛:

https://pypi.org/

解壓後,在目錄執行:python setup.py install

往期推薦

Postman教學-變數、集合的基本使用

Postman教學-透過設定代理/攔截器捕獲請求訊息

Postman教學-Response相關的基本操作

Postman教學-Send Requests相關的基本操作

Postman教學-介面測試流程&發送第一個請求

Postman+Newman+Git+Jenkins實現介面自動化測試持續整合

2020年小博公眾號文章集錦