Python 中的常用第三方模塊
Python 有豐富且易用的第三方模塊,使用第三方模塊省去了大量開發(fā)時(shí)間。本節(jié)介紹了 Python 的包管理工具 pip,講解了使用 pip 下載、安裝、卸載第三方模塊的方法,最后介紹了常用的第三方 Python 模塊。
1. 第三方模塊簡(jiǎn)介
Python 的標(biāo)準(zhǔn)庫(kù)是隨著 Pyhon 安裝的時(shí)候默認(rèn)自帶的庫(kù),提供了有文本處理、系統(tǒng)管理、網(wǎng)絡(luò)處理等功能。Python 的第三方庫(kù),是由各家廠商和 Python 愛好者開發(fā)的庫(kù),第三方庫(kù)需要下載后安裝到 Python 的安裝目錄下。
有一句話:“人生苦短,我用Python”。使用 Python 可以節(jié)省開發(fā)時(shí)間,原因在于: Python 有豐富且易用的第三方模塊。使用第三方模塊省去了大量重復(fù)造輪子的時(shí)間,節(jié)約了眾多開發(fā)者的生命。所以現(xiàn)如今Python這么火,大行其道,也是有其原因的。
網(wǎng)站 https://pypi.org 匯聚了所有的第三方模塊的信息,通過(guò)該網(wǎng)站可以查找和下載第三方模塊,輸入第三方模塊的名字可以查詢到該模塊的信息,如下圖所示:
2. pip 簡(jiǎn)介
2.1 pip 簡(jiǎn)介
pip 是 Python 包管理工具,該工具提供了對(duì)Python 包的查找、下載、安裝、卸載的功能。
Python 3.4+ 以上版本自帶 pip 工具,如果在 python.org 下載最新版本的安裝包,則已經(jīng)自帶了該工具。使用命令 pip --version 檢查是否已經(jīng)安裝了 pip,如下所示:
C:\> pip --version
pip 9.0.1 from C:\Python3\lib\site-packages (python 3.6)
2.2 pip 和 pip3
存在有兩個(gè)主要的 Python 版本:Python2 和 Python3,這兩個(gè)版本的語(yǔ)法和庫(kù)不完全兼容,對(duì)應(yīng)有 2 個(gè)包管理工具:pip 和 pip3,它們的區(qū)別如下:
- 如果系統(tǒng)中同時(shí)安裝了 Python2 和 Python3,則 pip 用于安裝 Python2 的模塊,pip3 用于安裝 Python3 的模塊;
- 如果系統(tǒng)中只安裝了 Python2,那么就只能使用 pip;
- 如果系統(tǒng)中只安裝了 Python3,那么既可以使用 pip 也可以使用 pip3,二者是等價(jià)的。
在 Linux 系統(tǒng)中,默認(rèn)安裝有 Python2,安裝完 Python3 以后,系統(tǒng)中就存在兩個(gè)版本的 Python,因此,最好明確使用 pip3 指定安裝 Python3 的模塊。
2.3 更換 pip 的源
pip 工具會(huì)從網(wǎng)站自動(dòng)下載 Python 的第三方模塊,提供下載 Python 第三方模塊的網(wǎng)站被稱為源。默認(rèn)情況下,pip 從國(guó)外網(wǎng)站下載 Python 的第三方模塊,速度非常的慢。為了加快下載速度,可以將 pip 的源改為國(guó)內(nèi)的鏡像源。
國(guó)內(nèi)常用的源如下:
源的提供方 | 源的 URL |
---|---|
阿里云 | https://mirrors.aliyun.com/pypi/simple |
清華 | https://pypi.tuna.tsinghua.edu.cn/simple |
中國(guó)科技大學(xué) | https://pypi.mirrors.ustc.edu.cn/simple |
華中理工大學(xué) | http://pypi.hustunique.com |
豆瓣 | http://pypi.douban.com/simple |
2.4 在 Linux 下更換源
在 Linux 下更換源的步驟如下:
1. 在用戶主目錄下創(chuàng)建 .pip 目錄
mkdir ~/.pip
2. 創(chuàng)建 ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
2.5 在 Windows 下更換源
在 Windows 下更換源的步驟如下:
1. 進(jìn)入目錄 Roaming
cd C:\Users\Administrator\AppData\Roaming
目錄 Roaming 用來(lái)存放軟件的配置文件。
2. 創(chuàng)建目錄 pip
mkdir pip
3. 創(chuàng)建文件 pip\pip.ini
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
3. pip3 的使用
3.1 pip3 list
命令 pip3 list 列出所有已經(jīng)安裝的包,示例如下:
C:\> pip3 list
certifi (2020.4.5.1)
chardet (3.0.4)
idna (2.9)
numpy (1.18.4)
pip3 (9.0.1)
pygame (1.9.4)
requests (2.23.0)
setuptools (28.8.0)
urllib3 (1.25.9)
pip3 list 輸出了已經(jīng)安裝的包的名稱和版本。
3.2 pip3 search package-name
命令 pip3 search package-name 在 pypi.org 上根據(jù) package-name 搜索第三方包。
輸出所有包含有關(guān)鍵字 requests 的第三方模塊,并給出模塊的功能簡(jiǎn)介,示例如下:
C:\> pip3 search requests
requests-auth (5.1.0) - Authentication for Requests
pydantic-requests (0.1.3) - A pydantic integration with requests.
Requests-OpenTracing (0.2.0) - OpenTracing support for Requests
yamlsettings-requests (1.0.0) - YamlSettings Request Extension
requests-aws4auth (0.9) - AWS4 authentication for Requests
pycopy-requests (0.0.0) - Dummy requests module for Pycopy
jupyter-requests (0.0.3) - Send requests to a Jupyter server.
requests-middleware (0.1.2) - Composable HTTP middleware for requests
...
3.3 pip3 install package-name
命令 pip3 install package-name 安裝名稱為 package-name 的第三方模塊。命令 pip install 從網(wǎng)站 pypi.org 下載指定名稱的第三方模塊然后自動(dòng)安裝,非常方便。
安裝名為 django 的第三方模塊,示例如下:
C:\>pip3 install django
Collecting django
Downloading https://files.pythonhosted.org/packages/9d/04/04abb097c84c770180ee
ebe7ed920ce42f9917ab5ad4de01ff8ed11bc25b/Django-3.0.6-py3-none-any.whl (7.5MB)
34% |███████████▏ | 2.6MB 144kB/s eta 0:00:34
34% |███████████▏ | 2.6MB 108kB/s eta 0:00:45
35% |███████████▏ | 2.6MB 108kB/s eta 0:00:45
...
3.4 pip3 install --upgrade package-name
命令 pip3 install --upgrade package-name 升級(jí)名稱為 package-name 的第三方模塊。命令 從網(wǎng)站 pypi.org 下載指定名稱的第三方模塊的最新版本,然后自動(dòng)安裝升級(jí)。
升級(jí)名為 requests 的第三方模塊,示例如下:
C:\>pip3 install --upgrade requests
Requirement already up-to-date: requests in c:\python3\lib\site-packages
Requirement already up-to-date: certifi>=2017.4.17 in c:\python3\lib\site-pac
kages (from requests)
Requirement already up-to-date: idna<3,>=2.5 in c:\python3\lib\site-packages
(from requests)
Requirement already up-to-date: chardet<4,>=3.0.2 in c:\python3\lib\site-pack
ages (from requests)
Requirement already up-to-date: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in d:\ad
don\py36\lib\site-packages (from requests)
3.5 pip3 uninstall package-name
命令 pip3 uninstall package-name 卸載名稱為 package-name 的第三方模塊。卸載 requests 模塊,示例如下:
C:\>pip3 uninstall requests
Uninstalling requests-2.23.0:
c:\python3\lib\site-packages\requests-2.23.0.dist-info\installer
c:\python3\lib\site-packages\requests-2.23.0.dist-info\license
c:\python3\lib\site-packages\requests-2.23.0.dist-info\metadata
c:\python3\lib\site-packages\requests-2.23.0.dist-info\record
c:\python3\lib\site-packages\requests-2.23.0.dist-info\top_level.txt
c:\python3\lib\site-packages\requests-2.23.0.dist-info\wheel
c:\python3\lib\site-packages\requests\__init__.py
...
Proceed (y/n)? y
Successfully uninstalled requests-2.23.0
卸載 requests 模塊時(shí),首先列出該模塊相關(guān)的文件,在刪除這些文件前,程序要求用戶輸入 y 進(jìn)行確認(rèn)。用戶輸入 y 后,pip3 就會(huì)卸載該模塊。
3.6 pip3 show package-name
命令 pip3 show package-name 顯示名稱為 package-name 的第三方模塊的信息,示例如下:
C:\> pip3 show requests
Name: requests
Version: 2.23.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: c:\python3\lib\site-packages
Requires: chardet, idna, certifi, urllib3
在以上信息中,requires 列出 requests 模塊的依賴的模塊:chardet、idna、certifi、urllib3,當(dāng)安裝 requests 模塊時(shí),會(huì)自動(dòng)安裝這 4 個(gè)模塊。
4. 常用的第三方模塊
4.1 requests 模塊
requests 是一個(gè)的簡(jiǎn)單易用的 http 庫(kù),發(fā)出 http 請(qǐng)求并獲取響應(yīng),可以用于抓取網(wǎng)站的頁(yè)面。
使用 requests.get(url) 方法抓取 baidu 的首頁(yè),示例如下:
>>> import requests
>>> response = requests.get('https://www.baidu.com')
>>> response.text
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type c
ontent=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
...
- 在第 2 行,使用 requests.get(‘https://www.baidu.com’) 獲取 baidu 首頁(yè)
- 在第 3 行,response.text 是 baidu 首頁(yè) html 文件的內(nèi)容
4.2 numpy 模塊
NumPy(Numerical Python) 是 Python 語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。NumPy 是一個(gè)運(yùn)行速度非常快的數(shù)學(xué)庫(kù),主要用于科學(xué)計(jì)算,包含:
- 一個(gè)強(qiáng)大的 N 維數(shù)組對(duì)象 ndarray
- 統(tǒng)計(jì)函數(shù)
- 線性代數(shù)、傅里葉變換、隨機(jī)數(shù)生成
- 矩陣運(yùn)算
numpy 提供了從數(shù)組中查找最小元素,最大元素的功能,示例如下:
>>> import numpy
>>> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
>>> numpy.amin(a)
1
>>> numpy.amax(a)
9
- 在第 2 行,創(chuàng)建一個(gè)二維數(shù)組
- 在第 3 行,函數(shù) amin(a) 返回?cái)?shù)組的最小元素
- 在第 5 行,函數(shù) amax(a) 返回?cái)?shù)組的最小元素
4.3 pygame 模塊
Pygame 是一組用來(lái)開發(fā)游戲軟件的 Python 程序模塊,基于 SDL 庫(kù)的基礎(chǔ)上開發(fā)。允許你在 Python 程序中創(chuàng)建功能豐富的游戲和多媒體程序,Pygame 是一個(gè)高可移植性的模塊,可以支持多個(gè)操作系統(tǒng),使用 Pygame 開發(fā)的程序可以運(yùn)行在 windows、linux 和 mac os 上。
使用 pygame 開發(fā)了一個(gè)圍棋的游戲,如下圖所示:
4.4 pymysql 模塊
pymysql 模塊提供了訪問(wèn) mysql 數(shù)據(jù)庫(kù)的功能,包括:
- 獲取與數(shù)據(jù)庫(kù)的連接
- 執(zhí)行 SQL 語(yǔ)句并獲取執(zhí)行結(jié)果
- 關(guān)閉數(shù)據(jù)庫(kù)連接
假設(shè)存在數(shù)據(jù)庫(kù) QA,查詢表 users 的示例如下:
import pymysql
conn = pymysql.connect(host="localhost", user="root", passwd="", db='QA')
cursor = conn.cursor()
cursor.execute("SELECT userId,password FROM users");
rows = cursor.fetchall()
for row in rows:
print(row[0], row[1])
cursor.close()
conn.close()
- 在第 3 行,連接數(shù)據(jù)庫(kù) QA
- 在第 6 行,執(zhí)行 SQL 語(yǔ)句 SELECT userId,password FROM users
- 在第 7 行,函數(shù) fetchall() 返回 SQL 語(yǔ)句的查詢結(jié)果
程序輸出如下:
張三 ZhangSan
李四 LiSi
王五 WangWu
4.5 其它常用的模塊
模塊名 | 功能 |
---|---|
urllib3 | Python HTTP庫(kù),安全連接池、支持文件post |
RoboBrowser | 無(wú)需獨(dú)立的瀏覽器即可瀏覽網(wǎng)頁(yè) |
MechanicalSoup | 一個(gè)與網(wǎng)站自動(dòng)交互 Python 庫(kù) |
mechanize | 有狀態(tài)、可編程的 Web 瀏覽庫(kù) |
hyper | Python的HTTP/2客戶端 |
grab | 網(wǎng)絡(luò)爬蟲框架(基于pycurl/multicur) |
scrapy | 網(wǎng)絡(luò)爬蟲框架(基于twisted)架 |
selenium | 用于Web應(yīng)用程序測(cè)試的工具 |
jieba | 中文分詞工具 |
OpenCV | 開源計(jì)算機(jī)視覺庫(kù) |
SimpleCV | 用于照相機(jī)、圖像處理、特征提取、格式轉(zhuǎn)換 |