最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于pycharm 切換 python3.9 報(bào)錯(cuò) ‘HTMLParser‘ object has no attribute ‘unescape‘ 的問題

 更新時(shí)間:2020年11月24日 08:45:47   作者:程序員的一天  
這篇文章主要介紹了pycharm 切換 python3.9 報(bào)錯(cuò) ‘HTMLParser‘ object has no attribute ‘unescape‘ 解決,需要的朋友可以參考下

有的bug,莫名其妙就好了…

python3.9 報(bào)錯(cuò) “AttributeError: 'HTMLParser' object has no attribute 'unescape'” 異常分析解決。

一、問題描述

安裝 python3.9 版本后,pycharm 中切換 python3.9 版本,創(chuàng)建虛擬環(huán)境報(bào)錯(cuò):"AttributeError: 'HTMLParser' object has no attribute 'unescape'"。

Executed command:
C:\Users\腳本之家\AppData\Local\Temp\tmp41_yhcxspycharm-management\setuptools-40.8.0\setup.py install

Error occurred:
AttributeError: 'HTMLParser' object has no attribute 'unescape'

Command output:
Traceback (most recent call last):
File "C:\Users\腳本之家\AppData\Local\Temp\tmp0mv4mj35pycharm-management\setuptools-40.8.0\setup.py", line 11, in <module>
import setuptools
File "C:\Users\腳本之家\AppData\Local\Temp\tmp0mv4mj35pycharm-management\setuptools-40.8.0\setuptools\__init__.py", line 20, in <module>
from setuptools.dist import Distribution, Feature
File "C:\Users\腳本之家\AppData\Local\Temp\tmp0mv4mj35pycharm-management\setuptools-40.8.0\setuptools\dist.py", line 35, in <module>
from setuptools.depends import Require
File "C:\Users\腳本之家\AppData\Local\Temp\tmp0mv4mj35pycharm-management\setuptools-40.8.0\setuptools\depends.py", line 7, in <module>
from .py33compat import Bytecode
File "C:\Users\腳本之家\AppData\Local\Temp\tmp0mv4mj35pycharm-management\setuptools-40.8.0\setuptools\py33compat.py", line 55, in <module>
unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape)
AttributeError: 'HTMLParser' object has no attribute 'unescape'

查看官網(wǎng) python3.9changelog,發(fā)現(xiàn) HTMLParser.unescape 屬性被移除了,并且從 python3.4 開始就被棄用。

python3.9 changelog

pycharm 創(chuàng)建虛擬環(huán)境時(shí),會(huì)使用到 setuptools。而 setuptools 中,剛好使用了這個(gè)屬性,所以,導(dǎo)致了"AttributeError: 'HTMLParser' object has no attribute 'unescape'"異常。

經(jīng)過各種分析、嘗試,問題最終得到解決。記錄下過程,避免更多人踩坑。

二、解決方法

先給出解決方法,感興趣的朋友,可以繼續(xù)閱讀后面的分析部分。

解決這個(gè)問題,分兩種情況:

1. 不通過 pycharm 編輯器,直接使用 python 解釋器。
2. 在 pycharm 編輯器中使用 python 解釋器。

我是在 pycharm 中使用 python3.9 觸發(fā)報(bào)錯(cuò),所以這里也單獨(dú)提出來討論討論。

2.1、直接使用 python 解釋器

不通過 pycharm 編輯器,直接使用 python 解釋器。比如,在 windowscmd ,或 linux 下的命令行中使用 python。

解決方法:更新 setuptools 版本。
我以 python3.9 使用 setuptools 為例,測試如下。

2.1.1、setuptools 低版本觸發(fā)報(bào)錯(cuò)

setuptools-40.8.0 為例,測試觸發(fā)報(bào)錯(cuò)如下:

第一步,使用 python3.9 下的 pip 卸載之前安裝的 setuptools:

E:\soft\python\python39\install>pip uninstall setuptools

第二步,安裝 setuptools-40.8.0

E:\soft\python\python39\install>pip install setuptools==40.8.0
Collecting setuptools==40.8.0
 Using cached setuptools-40.8.0-py2.py3-none-any.whl (575 kB)
Installing collected packages: setuptools
Successfully installed setuptools-40.8.0

第三步,在 python3.9 中導(dǎo)入包觸發(fā)報(bào)錯(cuò):

E:\soft\python\python39\install>python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\soft\python\python39\install\lib\site-packages\setuptools\__init__.py", line 20, in <module>
from setuptools.dist import Distribution, Feature
File "E:\soft\python\python39\install\lib\site-packages\setuptools\dist.py", line 35, in <module>
from setuptools.depends import Require
File "E:\soft\python\python39\install\lib\site-packages\setuptools\depends.py", line 7, in <module>
from .py33compat import Bytecode
File "E:\soft\python\python39\install\lib\site-packages\setuptools\py33compat.py", line 55, in <module>
unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape)
AttributeError: 'HTMLParser' object has no attribute 'unescape'

2.1.2、setuptools 高版本解決報(bào)錯(cuò)

setuptools-49.2.1 為例,測試如下:

第一步,卸載之前安裝的 setuptools:

E:\soft\python\python39\install>pip uninstall setuptools
Found existing installation: setuptools 40.8.0
Uninstalling setuptools-40.8.0:
 Would remove:
 e:\soft\python\python39\install\lib\site-packages\easy_install.py
 e:\soft\python\python39\install\lib\site-packages\pkg_resources\*
 e:\soft\python\python39\install\lib\site-packages\setuptools-40.8.0.dist-info\*
 e:\soft\python\python39\install\lib\site-packages\setuptools\*
 e:\soft\python\python39\install\scripts\easy_install-3.9.exe
 e:\soft\python\python39\install\scripts\easy_install.exe
Proceed (y/n)? y
 Successfully uninstalled setuptools-40.8.0

第二步,安裝 setuptools==49.2.1:

E:\soft\python\python39\install>pip install setuptools==49.2.1
Collecting setuptools==49.2.1
 Using cached setuptools-49.2.1-py3-none-any.whl (789 kB)
Installing collected packages: setuptools
Successfully installed setuptools-49.2.1

第三步,在 python3.9 中導(dǎo)入包:

E:\soft\python\python39\install>python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
>>> setuptools.__version__
'49.2.1'
>>>

目前最新版本,應(yīng)該是到 setuptools-50.3.2 了 。

2.2、在 pycharm 中使用 python 解釋器

pycharm 中創(chuàng)建 python3.9 虛擬環(huán)境報(bào)錯(cuò),本質(zhì)上也是使用了 setuptools 的低版本導(dǎo)致。
我嘗試過更新 setuptools 為更高的版本,但 pycharm 還是頑固的使用了 setuptools-40.8.0,如最開始的報(bào)錯(cuò)信息所示…

我不知道是 pycharm 中的某些默認(rèn)配置導(dǎo)致,還是 pycharm 的版本屬性導(dǎo)致它使用了低版本的 setuptools,如果有朋友知道,歡迎告知。

雖然,不知道 pycharm 中選擇低版本 setuptools 的原因。這里,也簡單提供兩種解決方法吧~

2.2.1、virtualenv 創(chuàng)建虛擬環(huán)境

virtualenv 為應(yīng)用提供隔離的 Python 運(yùn)行環(huán)境,可以解決不同應(yīng)用間多版本 python 的沖突問題。

利用 virtualenv 創(chuàng)建虛擬環(huán)境后,pycharm 中創(chuàng)建虛擬環(huán)境時(shí),選擇已存在的虛擬環(huán)境,可以避開報(bào)錯(cuò)。

第一步: 確認(rèn) python3.9 對應(yīng)的 pip 工具。
如果沒有配環(huán)境變量,可以直接從安裝路徑下打開 cmd 工具。一般在 python 安裝目錄下的 Scripts 文件夾內(nèi)。使用 pip -V 可以查看 pip 對應(yīng)的 python 版本。

E:\soft\python\python39\install>pip -V
pip 20.2.4 from e:\soft\python\python39\install\lib\site-packages\pip (python 3.9)

第二步: 安裝 virtualenv

pip install virtualenv

第三步: 創(chuàng)建虛擬環(huán)境。
virtualenv 指令用于創(chuàng)建虛擬環(huán)境,后跟虛擬環(huán)境保存路徑。

virtualenv E:\soft\python\python39\env

如果需要?jiǎng)h除虛擬環(huán)境,直接刪除對應(yīng)文件夾即可。

第四步: pycharm 中選擇已存在的虛擬環(huán)境。
"File --> Settings --> Python Interpreter",進(jìn)入對應(yīng)界面。

pycharm中選擇已存在虛擬環(huán)境

這里,需要選擇到虛擬環(huán)境中的 python.exe,否則 OK 鍵為灰色,無法點(diǎn)擊。

通過該方法,可以在原本報(bào)錯(cuò)的 pycharm 中創(chuàng)建 python3.9 虛擬環(huán)境。

2.2.2、pycharm 版本更換

報(bào)錯(cuò)版本為:pycharm-community-2019.2.1
下載安裝最新版本:pycharm-community-2020.2.3。

點(diǎn)擊運(yùn)行要安裝的 pycharm-community-2020.2.3.exe 文件,會(huì)自動(dòng)檢測,提示卸載已安裝的pycharm

為避免其他問題,卸載過程中,可以選擇刪除舊版本配置等。

卸載過程中選擇刪除緩存配置和已安裝插件等

經(jīng)過測試,使用最新版本 pycharm 可以成功創(chuàng)建 python3.9 虛擬環(huán)境。
為了驗(yàn)證是否為 pycharm 的版本兼容問題,我卸載最新版本,重新安裝舊版本 pycharm 后,依然報(bào)錯(cuò)!我猜測是固定的 pycharm 版本,使用了固定的某些 setuptools 版本,導(dǎo)致了兼容性報(bào)錯(cuò)。

我也懷疑過是系統(tǒng)中多個(gè)版本 python 的環(huán)境變量順序,導(dǎo)致pycharm 找到了錯(cuò)誤的依賴項(xiàng)。嘗試在環(huán)境變量中將 python3.9 相關(guān)值移動(dòng)到最前面,依然不能解決問題。

看來,最新的 python 還是得配最新的 pycharm!編碼界的愛情故事么…

三、原因分析

感興趣的朋友,歡迎繼續(xù)閱讀。

Traceback 報(bào)錯(cuò)日志中,可以看到,是在 setuptools-40.8.0\setuptools\py33compat.py 的55行, 執(zhí)行 unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape) 時(shí),拋出了 AttributeError: 'HTMLParser' object has no attribute 'unescape' 異常。

可以肯定是由 setuptools 引起的報(bào)錯(cuò)。這里有一個(gè)關(guān)鍵的信息:py33compat.py 文件。
pyXXcompat.pysetuptools 兼容 python 版本相關(guān)的文件。

進(jìn)入到 ..\Lib\site-packages\setuptools 查看 setuptools-40.8.0 的安裝文件,可以看到,包含了 py27compat.py 、py31compat.py 、py33compat.py 。

setuptools-40.8.0兼容文件

進(jìn)入到 ..\Lib\site-packages\setuptools 查看 setuptools-49.2.1 的安裝文件,可以看到,只包含了 py34compat.py

setuptools-49.2.1兼容文件

而我們從 python3.9changelog 中,可以知道 HTMLParser.unescape 屬性被移除了,并且從 python3.4 開始就被棄用了。

所以,從兼容 python3.4 開始,setuptools 中就放棄了使用 HTMLParser.unescape。
因此,只要包含 py34compat.py 文件的 setuptools 版本,就能兼容 python3.9 版本。

到此這篇關(guān)于關(guān)于pycharm 切換 python3.9 報(bào)錯(cuò) ‘HTMLParser‘ object has no attribute ‘unescape‘ 的問題的文章就介紹到這了,更多相關(guān)pycharm 切換 python3.9 報(bào)錯(cuò)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

大厂| 西乡县| 长丰县| 武乡县| 平罗县| 通城县| 拜泉县| 阿瓦提县| 常德市| 新余市| 永清县| 钦州市| 渭源县| 穆棱市| 施甸县| 张家口市| 温泉县| 长泰县| 曲靖市| 萨迦县| 临西县| 鄂伦春自治旗| 皮山县| 乌苏市| 碌曲县| 乌什县| 安西县| 建德市| 文登市| 枣阳市| 平江县| 开化县| 朝阳市| 时尚| 中西区| 疏勒县| 托克逊县| 西乡县| 泸州市| 秭归县| 崇义县|