本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理
本文章來自騰訊雲 作者:Python知識大全
想要學習Python?有問題得不到第一時間解決?來看看這里“1039649593”滿足你的需求,資料都已經上傳至文件中,可以自行下載!還有海量最新2020python學習資料。
點擊查看
包、庫、模塊是Python中常用的概念。一般來說,模塊指一個包含若干函數定義、類定義或常量的Python源程序文件,庫或包指包含若干模塊並且其中一個文件名為__init__.py的文件夾。對於包含完整功能代碼的單個模塊,叫作庫也可以,例如標准庫re和re模塊這兩種說法都可以。但一般不把庫叫作模塊,例如tkinter庫包含若干模塊文件,此時一般說標准庫tkinter而不說tkinter模塊。
在Python中,有內置模塊、標准庫和擴展庫之分。內置模塊和標准庫是Python官方的標准安裝包自帶的,內置模塊沒有對應的文件,可以認為是封裝在Python解釋器主程序中的;標准庫有對應的Python程序文件,這些文件在Python安裝路徑中的Lib文件夾中。如圖1中1、2、3所示。
圖1 內置模塊、標准庫、擴展庫的區別
Python官方的標准安裝包自帶了math(數學模塊)、random(隨機模塊)、datetime(日期時間模塊)、collections(包含更多擴展版本序列的模塊)、functools(與函數以及函數式編程有關的模塊)、urllib(與網頁內容讀取以及網頁地址解析有關的模塊)、itertools(與序列迭代有關的模塊)、string(字符串操作)、re(正則表達式模塊)、os(系統編程模塊)、os.path(與文件、文件夾有關的模塊)、zlib(數據壓縮模塊)、hashlib(安全哈希與報文摘要模塊)、socket(套接字編程模塊)、tkinter(GUI編程模塊)、sqlite3(操作SQLite數據庫的模塊)、csv(讀寫CSV文件的模塊)、json(讀寫JSON文件的模塊)、pickle(數據序列化與反序列化的模塊)、statistics(統計模塊)、time(時間操作有關的模塊)等大量內置模塊和標准庫(完整清單可以通過官方在線幫助文檔https://docs.python.org/3/library/index.html進行查看),但沒有集成任何擴展庫,程序員可以根據實際需要再安裝第三方擴展庫。
截至2021年1月,pypi已經收錄了超過28萬個擴展庫項目,涉及很多領域的應用,例如jieba(用於中文分詞)、moviepy(用於編輯視頻文件)、xlrd(用於讀取Excel 2003之前版本文件)、xlwt(用於寫入Excel 2003之前版本文件)、openpyxl(用於讀寫Excel2007及更高版本文件)、python-docx(用於讀寫Word 2007及更新版本文件)、python-pptx(用於讀寫PowerPoint 2007及更新版本文件)、pymupdf(用於操作PDF文件)、pymssql(用於操作Microsoft SQLServer數據庫)、pypinyin(用於處理中文拼音)、pillow(用於數字圖像處理)、pyopengl(用於計算機圖形學編程)、numpy(用於數組計算與矩陣計算)、scipy(用於科學計算)、pandas(用於數據分析與處理)、matplotlib(用於數據可視化或科學計算可視化)、requests(用於實現網絡爬蟲功能)、beautifulsoup4(用於解析網頁源代碼)、scrapy(爬蟲框架)、sklearn(用於機器學習)、PyTorch、tensorflow(用於深度學習)、flask、django(用於網站開發)等幾乎滲透到所有領域的擴展庫或第三方庫。
Python官方提供的安裝包只包含了內置模塊和標准庫,沒有包含任何擴展庫,開發人員可以根據實際需要再安裝和使用合適的擴展庫,成功安裝之后擴展庫文件會存放於Python安裝路徑的Lib\site-packages文件夾中,如圖1中4、5、6所示。Python自帶的pip工具是管理擴展庫的主要方式,支持Python擴展庫的安裝、升級和卸載等操作。pip命令需要在命令提示符環境中執行,在線安裝擴展庫的話需要計算機保持聯網狀態,該命令常用方法如表1所示,可以在命令提示符環境執行命令“pip -h”查看完整用法。
表1 常用pip命令使用方法
如果使用Anaconda3的話,除了pip之外,也可以使用conda命令安裝、更新和卸載Python擴展庫。命令conda支持clean、config、create、info、install、list、uninstall、upgrade等子命令,可以使用命令“conda -h”查看具體用法。在開始菜單中依次打開“Anaconda3(64bit)”==>“Anaconda Prompt(Anaconda3)”,如圖1-15中箭頭3所示。進入Anaconda命令提示符環境,執行conda命令管理擴展庫即可。
並不是每個擴展庫都有相應的conda版本,如果遇到conda無法裝的擴展庫,進入Anaconda Prompt(Anaconda3)命令提示符環境使用pip安裝之后一樣可以在Anaconda3的Jupyter Notebook和Spyder環境中使用。如圖2所示。
圖2 使用pip命令為Anaconda3安裝擴展庫
很多初學者由於不熟悉環境搭建尤其是擴展庫的安裝,浪費了大量寶貴時間。本節簡單介紹一下安裝擴展庫過程中常見的幾種問題以及相應的解決方法。
(1)在線安裝失敗
如果在線安裝擴展庫失敗,一定要仔細閱讀錯誤信息,這對於解決問題是至關重要的。只有准確地知道發生了什么錯誤,才有可能找到正確的解決方法。
在線安裝失敗最大的可能有三個:1)網絡不好導致下載失敗,2)需要本地安裝有正確版本的VC++編譯環境,3)擴展庫暫時還不支持自己使用的Python版本。對於第一種錯誤,可以多嘗試幾次、指定國內源或下載whl文件離線安裝。如果出現第二種錯誤,可以在本地安裝合適版本的VC++編譯器或者下載whl文件離線安裝。對於第三種錯誤,可以嘗試找一下有沒有第三方編譯好的whl文件可以下載然后離線安裝。
在Windows平台上,可以從http://www.lfd.uci.edu/~gohlke/pythonlibs/下載大量第三方編譯好的.whl格式擴展庫安裝文件,如圖3所示。此處要注意,一定要選擇正確版本(文件名中有cp38表示適用於Python 3.8,有cp37表示適用於Python 3.7,以此類推;文件名中有win32表示適用於32位Python,有win_amd64表示適用於64位Python),並且不要修改下載的文件名。
圖3 下載合適版本的whl文件
然后在命令提示符或PowerShell環境中使用pip命令進行離線安裝,指定文件的完整路徑和擴展名,例如:
pip install psutil-5.6.7-cp38-cp38-win_amd64.whl
在PowerShell環境中,如果要執行當前目錄下的程序,需要在前面加一個圓點和一個斜線,例如在Python安裝路徑中Scripts文件夾中執行上面的命令需要改成下面的格式:
./pip install psutil-5.6.7-cp38-cp38-win_amd64.whl
如果由於網速問題導致在線安裝速度過慢的話,pip命令支持指定國內的站點來提高速度,下面的命令用來從阿里雲服務器下載安裝擴展庫jieba,其他服務器地址可以自行查閱。
pip install jieba -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
如果固定使用阿里雲服務器鏡像,可以在當前登錄用戶的AppData\Roaming文件夾中創建文件夾pip,在pip文件夾中創建文件pip.ini,輸入下面的內容,以后再執行pip命令安裝和升級擴展庫時就不用每次都指定服務器地址了。
[global]
index-url = http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host = mirrors.aliyun.com
如果遇到類似於“拒絕訪問”的出錯提示,可以使用管理員權限啟動命令提示符,或者在執行pip命令時在最后增加選項“–user”。
(2)安裝路徑帶來的問題
很多初學者會遇到這樣的問題:使用pip安裝擴展庫時明明提示安裝成功,使用pip list或pip freeze查看擴展庫清單里也有,但在Python開發環境中卻一直提示不存在。這樣的問題基本上可以肯定是安裝路徑和使用路徑不一致造成的。
注意,如果計算機上安裝了多個版本的Python開發環境,在一個版本下安裝的擴展庫無法在另一個版本中使用。為了避免因為路徑問題帶來困擾,強烈建議在命令提示符或PowerShell環境切換至相應版本Python安裝目錄的scripts文件夾中,然后執行pip命令,如果要離線安裝擴展庫的話,最好也把.whl文件下載到相應版本的scripts文件夾中。簡單地說,想在哪個版本的Python中使用擴展庫,就到哪個版本的Python安裝路徑中的Scripts子文件夾中安裝擴展庫,這樣可以最大程度地減少錯誤。
(3)擴展庫自身bug或版本沖突問題
雖然現在這種情況已經越來越少遇到了,但確實還會偶爾發生。不管是多牛的程序員,寫出來的代碼都有可能會存在bug,這是正常的,Python也不例外。某些擴展庫在升級過程中解決原來問題的同時又引入了新的錯誤,導致某些功能在舊版本中工作正常但在新版本中卻無法使用。如果遇到類似的情況,可以查一下擴展庫的官方網站的最新消息,或者暫時還原較低的版本,如果水平足夠的話也可以自己修改一下擴展庫的代碼再使用。
編寫Python程序時,尤其是使用了擴展庫的程序,還可能會遇到的一種情況是,升級擴展庫以后原來的程序無法運行了,提示某些屬性或方法不存在。這是因為新版本擴展庫不再支持原來的用法,這時需要查一下這個擴展庫官方網站的更新歷史,找到最新的用法然后修改自己的代碼。
