Python包管理工具pip的使用完全指南
一、pip安裝與配置
1.1 獲取pip
現(xiàn)代Python版本(3.4+)已內(nèi)置pip,可通過以下命令驗(yàn)證:
python -m pip --version # 或 pip --version
若未安裝,可通過以下方式獲?。?/p>
Linux/macOS:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py
Windows:
(Invoke-WebRequest https://bootstrap.pypa.io/get-pip.py).Content | python -
1.2 升級pip
保持pip最新版本至關(guān)重要:
python -m pip install --upgrade pip
1.3 配置國內(nèi)鏡像源
臨時(shí)使用:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
永久配置:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
常用國內(nèi)鏡像源:
- 清華大學(xué)源
https://pypi.tuna.tsinghua.edu.cn/simple
? - 豆瓣源
https://pypi.douban.com/simple/?
- 中國科學(xué)技術(shù)大學(xué)
https://pypi.mirrors.ustc.edu.cn/simple
? - 阿里云
http://mirrors.aliyun.com/pypi/simple/?
- 中國科技大學(xué)
https://pypi.mirrors.ustc.edu.cn/simple/?
二、pip核心功能詳解
2.1 包安裝與管理
基礎(chǔ)安裝:
pip install requests
指定版本:
pip install django==4.2 pip install "flask>=2.0,<3.0"
升級包:
pip install --upgrade pandas
卸載包:
pip uninstall numpy
2.2 依賴管理
最佳實(shí)踐:
- 使用虛擬環(huán)境
- 使用uv等現(xiàn)代化管理工具,開發(fā)時(shí)就將依賴寫入
常規(guī)解決方案:
pip freeze
pip freeze > requirements.txt
但是這樣做有一個(gè)問題,那就是pip freeze會把當(dāng)前環(huán)境下的所有pip安裝的包都導(dǎo)出到requirements.txt中,但是我們很難保證當(dāng)前的環(huán)境只適用于著一個(gè)項(xiàng)目,也就是會引入很多不需要的包,為了解決這個(gè)問題,我們需要一個(gè)其他的工具,就是pipreqs。
pipreqs
安裝pipreqs
pip install pipreqs
如果是Windows系統(tǒng),會報(bào)編碼錯(cuò)誤(UnicodeDecodeError: 'gbk' codec can't decode byte 0xa8 in position 24: illegal multibyte sequence)
使用時(shí),指定編碼格式
pipreqs . --encoding=utf8 --force
定位到項(xiàng)目根路徑,執(zhí)行
pipreqs ./
之后,requirements.txt將被生成至./
路徑下
從文件安裝:
pip install -r requirements.txt
高級依賴解析:
pip install --no-deps package-name # 僅安裝指定包,不安裝依賴 pip install --pre package-name # 包含預(yù)發(fā)布版本
2.3 環(huán)境管理
查看已安裝包:
pip list # 查詢已經(jīng)安裝的所有包 pip list | findStr requests # 查詢包含requests的包
查看包詳情:
pip show requests
輸出
D:\>pip show requests
Name: requests
Version: 2.31.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:\Users\{{user}}\miniconda3\Lib\site-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by: conda, conda_package_streaming, DownloadKit, DrissionPage, google-api-core, html2image, huggingface-hub, requests-file, tiktoken, tldextract, webdriver-manager
檢查過時(shí)包:
pip list --outdated
該命令會去查詢最新版本和本地庫做比較,執(zhí)行時(shí)間較長
三、pip高級技巧
3.1 選擇性安裝
安裝可選依賴:
pip install "package[extra1,extra2]" # 例如 pip install "requests[security]"
以Qwen-Agent庫安裝為例
平臺特定依賴:
pip install --platform win_amd64 package-name # 64位Windows pip install --platform win32 package-name # 32位Windows # 強(qiáng)制安裝Linux版本的包(適用于WSL或特殊場景) pip install --platform manylinux2014_x86_64 --only-binary=:all: package-name # 安裝macOS版本的包(通常不推薦,僅用于特殊測試) pip install --platform macosx_10_15_x86_64 --only-binary=:all: package-name
特別提醒
- 多數(shù)情況下用戶不需要手動指定平臺,pip會自動選擇正確的版本
- 此技巧主要用于
- 為其他平臺預(yù)先下載依賴(如Docker鏡像準(zhǔn)備)
- 解決某些特殊包的兼容性問題
- 企業(yè)內(nèi)網(wǎng)部署時(shí)預(yù)先緩存依賴
3.2 緩存管理
3.2.1 查看緩存位置
pip cache dir # 清理特定包的緩存 pip cache remove package-name
使用 pip config list 查看配置
緩存位置可能被自定義配置覆蓋,可以檢查 pip 的全局配置:
pip config list
3.2.2 設(shè)置緩存位置
pip config set global.cache-dir "D:\data\pip\cache"
查看緩存:
pip cache list
清理緩存:
pip cache purge
再次執(zhí)行
禁用緩存:
pip install --no-cache-dir package-name
3.3 構(gòu)建與安裝本地包
從本地安裝:
pip install /path/to/package
從源碼安裝(可編輯模式):
pip install -e /path/to/package # 適合開發(fā)模式
構(gòu)建分發(fā)包:
pip install build python -m build
3.4 查詢包的歷史版本
場景:在一些時(shí)候通過pip install xxx? 安裝第三方庫的時(shí)候默認(rèn)情況下安裝最新版本,由于是最新版本有個(gè)穩(wěn)定性就不得不考慮其中,所以部分場景會存在一些 bug 這就要求我們安裝歷史版本:
如果你是想單純找到歷史版本,下面這條命令就可以搞定:
pip index versions xxxx
例如:
3.5 代碼中安裝
3.5.1 通過pip庫安裝
import pip def install_package(package_name): try: pip.main(['install', package_name, '-i', 'https://pypi.douban.com/simple/']) print(f"Successfully installed {package_name}") except Exception as e: print(f"Failed to install {package_name}: {str(e)}") # 示例:安裝requests庫 install_package('requests')
這段代碼會導(dǎo)入pip庫,并使用pip.main()
函數(shù)來安裝指定的庫。
運(yùn)行結(jié)果
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Looking in indexes: https://pypi.douban.com/simple/
Requirement already satisfied: requests in d:\dev\anaconda_data\envs\auto\lib\site-packages (2.28.2)
Requirement already satisfied: idna<4,>=2.5 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (2.10)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (3.0.1)
Requirement already satisfied: certifi>=2017.4.17 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (2022.12.7)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\dev\anaconda_data\envs\auto\lib\site-packages (from requests) (1.26.14)
Successfully installed requests
盡量避免使用該方式,未來版本可能會失效
3.5.2 通過subprocess庫安裝
import subprocess def install_package(package_name): try: subprocess.check_call(['pip', 'install', package_name]) print(f"Successfully installed {package_name}") except subprocess.CalledProcessError: print(f"Failed to install {package_name}") # 示例:安裝requests庫 install_package('requests')
這段代碼會調(diào)用系統(tǒng)的pip命令來安裝指定的庫。
四、pip疑難解答
4.1 常見錯(cuò)誤處理
權(quán)限問題:
pip install --user package-name # 用戶級安裝
版本沖突:
pip install --ignore-installed package-name
SSL錯(cuò)誤:
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org package-name
4.2 依賴解析策略
新舊解析器對比:
- 舊解析器(2020年前):簡單但可能不一致
- 新解析器(默認(rèn)):更嚴(yán)格但更可靠
強(qiáng)制使用舊解析器:
pip install --use-deprecated=legacy-resolver package-name
4.3 性能優(yōu)化
并行安裝:
pip install -U pip # 確保pip最新版 pip install --use-feature=fast-deps package-name
二進(jìn)制緩存:
pip install --cache-dir /path/to/cache package-name
五、pip生態(tài)系統(tǒng)
5.1 相關(guān)工具
pip-tools:高級依賴管理
pip install pip-tools pip-compile requirements.in # 生成精確的requirements.txt
pipdeptree:依賴樹可視化
pip install pipdeptree pipdeptree
pipx:全局Python應(yīng)用安裝
pip install pipx pipx install black
5.2 與虛擬環(huán)境集成
venv(Python內(nèi)置):
python -m venv myenv source myenv/bin/activate # Linux/macOS myenv\Scripts\activate # Windows pip install package-name
virtualenv(更強(qiáng)大):
pip install virtualenv virtualenv myenv
以上就是Python包管理工具pip的使用完全指南的詳細(xì)內(nèi)容,更多關(guān)于Python pip的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python免費(fèi)試用最新Openai?API的步驟
本文主要介紹了Python免費(fèi)試用最新Openai?API,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Flask搭建虛擬環(huán)境并運(yùn)行第一個(gè)flask程序
這篇文章主要介紹了Flask搭建虛擬環(huán)境并運(yùn)行第一個(gè)flask程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04在OpenCV里使用Camshift算法的實(shí)現(xiàn)
這篇文章主要介紹了在OpenCV里使用Camshift算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.m
在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的世界里,矩陣乘法是一項(xiàng)至關(guān)重要的操作,本文主要介紹了Pytorch矩陣乘法,包含了torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03