亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Python 中的常用第三方模塊

Python 有豐富且易用的第三方模塊,使用第三方模塊省去了大量開發時間。本節介紹了 Python 的包管理工具 pip,講解了使用 pip 下載、安裝、卸載第三方模塊的方法,最后介紹了常用的第三方 Python 模塊。

1. 第三方模塊簡介

Python 的標準庫是隨著 Pyhon 安裝的時候默認自帶的庫,提供了有文本處理、系統管理、網絡處理等功能。Python 的第三方庫,是由各家廠商和 Python 愛好者開發的庫,第三方庫需要下載后安裝到 Python 的安裝目錄下。

有一句話:“人生苦短,我用Python”。使用 Python 可以節省開發時間,原因在于: Python 有豐富且易用的第三方模塊。使用第三方模塊省去了大量重復造輪子的時間,節約了眾多開發者的生命。所以現如今Python這么火,大行其道,也是有其原因的。

網站 https://pypi.org 匯聚了所有的第三方模塊的信息,通過該網站可以查找和下載第三方模塊,輸入第三方模塊的名字可以查詢到該模塊的信息,如下圖所示:

圖片描述

2. pip 簡介

2.1 pip 簡介

pip 是 Python 包管理工具,該工具提供了對Python 包的查找、下載、安裝、卸載的功能。

Python 3.4+ 以上版本自帶 pip 工具,如果在 python.org 下載最新版本的安裝包,則已經自帶了該工具。使用命令 pip --version 檢查是否已經安裝了 pip,如下所示:

C:\> pip --version
pip 9.0.1 from C:\Python3\lib\site-packages (python 3.6)

2.2 pip 和 pip3

存在有兩個主要的 Python 版本:Python2 和 Python3,這兩個版本的語法和庫不完全兼容,對應有 2 個包管理工具:pip 和 pip3,它們的區別如下:

  • 如果系統中同時安裝了 Python2 和 Python3,則 pip 用于安裝 Python2 的模塊,pip3 用于安裝 Python3 的模塊;
  • 如果系統中只安裝了 Python2,那么就只能使用 pip;
  • 如果系統中只安裝了 Python3,那么既可以使用 pip 也可以使用 pip3,二者是等價的。

在 Linux 系統中,默認安裝有 Python2,安裝完 Python3 以后,系統中就存在兩個版本的 Python,因此,最好明確使用 pip3 指定安裝 Python3 的模塊

2.3 更換 pip 的源

pip 工具會從網站自動下載 Python 的第三方模塊,提供下載 Python 第三方模塊的網站被稱為源。默認情況下,pip 從國外網站下載 Python 的第三方模塊,速度非常的慢。為了加快下載速度,可以將 pip 的源改為國內的鏡像源。

國內常用的源如下:

2.4 在 Linux 下更換源

在 Linux 下更換源的步驟如下:

1. 在用戶主目錄下創建 .pip 目錄

mkdir ~/.pip

2. 創建 ~/.pip/pip.conf

[global]
index-url = https://mirrors.aliyun.com/pypi/simple

2.5 在 Windows 下更換源

在 Windows 下更換源的步驟如下:

1. 進入目錄 Roaming

cd C:\Users\Administrator\AppData\Roaming

目錄 Roaming 用來存放軟件的配置文件。

2. 創建目錄 pip

mkdir pip

3. 創建文件 pip\pip.ini

[global]
index-url = https://mirrors.aliyun.com/pypi/simple

3. pip3 的使用

3.1 pip3 list

命令 pip3 list 列出所有已經安裝的包,示例如下:

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 輸出了已經安裝的包的名稱和版本。

3.2 pip3 search package-name

命令 pip3 search package-name 在 pypi.org 上根據 package-name 搜索第三方包。

輸出所有包含有關鍵字 requests 的第三方模塊,并給出模塊的功能簡介,示例如下:

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 從網站 pypi.org 下載指定名稱的第三方模塊然后自動安裝,非常方便。

安裝名為 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 升級名稱為 package-name 的第三方模塊。命令 從網站 pypi.org 下載指定名稱的第三方模塊的最新版本,然后自動安裝升級。

升級名為 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 模塊時,首先列出該模塊相關的文件,在刪除這些文件前,程序要求用戶輸入 y 進行確認。用戶輸入 y 后,pip3 就會卸載該模塊。

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: [email protected]
License: Apache 2.0
Location: c:\python3\lib\site-packages
Requires: chardet, idna, certifi, urllib3

在以上信息中,requires 列出 requests 模塊的依賴的模塊:chardet、idna、certifi、urllib3,當安裝 requests 模塊時,會自動安裝這 4 個模塊。

4. 常用的第三方模塊

4.1 requests 模塊

requests 是一個的簡單易用的 http 庫,發出 http 請求并獲取響應,可以用于抓取網站的頁面。

使用 requests.get(url) 方法抓取 baidu 的首頁,示例如下:

>>> 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 首頁
  • 在第 3 行,response.text 是 baidu 首頁 html 文件的內容

4.2 numpy 模塊

NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。NumPy 是一個運行速度非常快的數學庫,主要用于科學計算,包含:

  • 一個強大的 N 維數組對象 ndarray
  • 統計函數
  • 線性代數、傅里葉變換、隨機數生成
  • 矩陣運算

numpy 提供了從數組中查找最小元素,最大元素的功能,示例如下:

>>> import numpy
>>> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
>>> numpy.amin(a)
1
>>> numpy.amax(a)
9
  • 在第 2 行,創建一個二維數組
  • 在第 3 行,函數 amin(a) 返回數組的最小元素
  • 在第 5 行,函數 amax(a) 返回數組的最小元素

4.3 pygame 模塊

Pygame 是一組用來開發游戲軟件的 Python 程序模塊,基于 SDL 庫的基礎上開發。允許你在 Python 程序中創建功能豐富的游戲和多媒體程序,Pygame 是一個高可移植性的模塊,可以支持多個操作系統,使用 Pygame 開發的程序可以運行在 windows、linux 和 mac os 上。

使用 pygame 開發了一個圍棋的游戲,如下圖所示:

圖片描述

4.4 pymysql 模塊

pymysql 模塊提供了訪問 mysql 數據庫的功能,包括:

  • 獲取與數據庫的連接
  • 執行 SQL 語句并獲取執行結果
  • 關閉數據庫連接

假設存在數據庫 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 行,連接數據庫 QA
  • 在第 6 行,執行 SQL 語句 SELECT userId,password FROM users
  • 在第 7 行,函數 fetchall() 返回 SQL 語句的查詢結果

程序輸出如下:

張三 ZhangSan
李四 LiSi
王五 WangWu

4.5 其它常用的模塊

模塊名 功能
urllib3 Python HTTP庫,安全連接池、支持文件post
RoboBrowser 無需獨立的瀏覽器即可瀏覽網頁
MechanicalSoup 一個與網站自動交互 Python 庫
mechanize 有狀態、可編程的 Web 瀏覽庫
hyper Python的HTTP/2客戶端
grab 網絡爬蟲框架(基于pycurl/multicur)
scrapy 網絡爬蟲框架(基于twisted)架
selenium 用于Web應用程序測試的工具
jieba 中文分詞工具
OpenCV 開源計算機視覺庫
SimpleCV 用于照相機、圖像處理、特征提取、格式轉換