完美解決ModuleNotFoundError: No module named '_bz2'和AttributeError: module 'pandas' has no attribute 'compat'錯誤


筆者環境:操作系統Ubuntu,Python3.7.4

最近筆者在虛擬機上安裝pandas時候遇到了各種各樣的問題,在導入pandas包時就提示出錯。然后借助查找各種資料最終解決了問題。

第一個錯誤就如上述ModuleNotFoundError: No module named '_bz2',在查閱資料后發現是虛擬機中安裝的Python3.7沒有_bz2.cpython-37m-x86_64-linux-gnu.so這個文件,但是可以在3.6版本中找到該文件。

隨后筆者在Python3.6的安裝目錄中找到了_bz2.cpython-36m-x86_64-linux-gnu.so,然后通過指令將這個文件copy到了3.7.4的對應目錄中,然后將_bz2.cpython-36m-x86_64-linux-gnu.s重命名為_bz2.cpython-37m-x86_64-linux-gnu.so后,再次運行代碼就不提示錯誤了。

但是運行出來還是錯誤的,接下來就提示了另一個錯誤AttributeError: module 'pandas' has no attribute 'compat',筆者在網上查閱相關資料,有建議降低pandas版本的,還有建議升級版本的。筆者在重裝了幾次新舊版本后,此問題都未得到解決。后來仔細觀察錯誤發現,錯誤代碼在pandas的__init__.py文件中的if pandas.compat.PY37這個方法中。

其中有一個警告,大概意思是Panel這個類已經從pandas中移除。然后筆者在開發文檔v0.20.1中找到了這樣一段話:

Deprecate Panel

Panelis deprecated and will be removed in a future version. The recommended way to represent 3-D data are with a MultiIndexon a DataFramevia the to_frame()or with the xarray package . Pandas provides a to_xarray()method to automate this conversion ( GH13563 ).

大致意思就是Panle在以后的版本中都會移除,取而代之的是multiindexon或dataframevia to_frame()或xarray來表示三維數據。

筆者嘗試將if else方法注釋掉后,所有錯誤均被解決,但是Panel類已經不能再用了。

目前使用中沒有遇到任何其他問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM