文章來源:https://zhuanlan.zhihu.com/p/351494670
在線安裝python的第三方庫實在是簡單的不能在簡單了,在anaconda Prompt直接輸入
pip install package
這裏我們先簡單介紹下pip——— 一個python包安裝與管理的軟件
pip的基本功能
既然是一個包安裝與管理軟件,那麼pip提供的功能基本就是:
#安裝
pip install pandas
#卸載
pip uninstall pandas
#導出 freeze
pip freeze > requirement.txt
#顯示 show/list
pip show pandas ##列出包的具體信息
Name: pandas
Version: 1.0.5
#Summary: Powerful data structures for data analysis, time series, and statistics
#Home-page: https://pandas.pydata.org
#Author: None
#Author-email: None
#License: BSD
#Location: c:\users\zhangyang\anaconda3\lib\site-packages
#Requires: python-dateutil, numpy, pytz
#Required-by: statsmodels, seaborn
pip list ##列出所有的包
由上圖可見,pip提供的功能還是蠻豐富的,只不過對於我們來講,最常用的就是install,show,freeze。
除了這些基本的功能外,還有一些擴展的選項需要我們掌握,比如使用鏡像源,通過txt文件批量安裝等等:
pip install package -i https://pypi.mirrors.ustc.edu.cn/simple/ ##使用中科大鏡像源
pip install -r requirement.txt ##安裝腳本里列出的庫
更具體的一些細節大家可以百度也可以通過pip --help,pip install --help查看幫助。
離線安裝python的庫及依賴庫
本篇文章的重點是解決在終端沒辦法聯網的情況下怎麼安裝想安裝的庫呢?我們以pyinstaller這個庫舉例子。
如果僅安裝pyinstaller的安裝包,那麼就會報錯,大家注意到上圖列出了pyinstaller的依賴庫:future,macholib,setuptools,pefile,而且macholib也有個依賴庫altgraph,結構如下。
- -pyinstaller
- ---future
- ---macholib
- ---altgraph
- ---setuptools
- ---pefile
我們的目標就是:一次性能夠下載所需的全部的安裝包!
其實解決的方式也很簡單,就是運用pip的基本功能download,具體格式如下
pip download -d ./path pyinstaller -i https://pypi.mirrors.ustc.edu.cn/simple/
<-d ./path>的意思是將下載的文件存放到當前目錄下的path文件夾裏面,<-i url>的意思是從中科大鏡像源下載文件。完成後如下圖:
我們發現一共下載了五個安裝包
正好是之前我們需要的庫及所有依賴庫以及依賴庫的依賴庫………………
那麼當解決完下載後,最後一步就剩下安裝了。
一個一個安裝的話……也不是不可以,但我們有更好的方法:
方法一:生成requirement.txt
pip install -r requirement.txt
我們在這個文件夾下建一個requirement.txt,打開後將命令行上的
Saved c:\users\admin\desktop\demo\dd\pyinstaller-3.3.1.tar.gz
Saved c:\users\admin\desktop\demo\dd\macholib-1.14-py2.py3-none-any.whl
Saved c:\users\admin\desktop\demo\dd\altgraph-0.17-py2.py3-none-any.whl
Saved c:\users\admin\desktop\demo\dd\pefile-2019.4.18.tar.gz
Saved c:\users\admin\desktop\demo\dd\future-0.18.2.tar.gz
Saved c:\users\admin\desktop\demo\dd\setuptools-53.0.0-py3-none-any.whl
後面包文件名按照倒序的方式複製到文件夾內:
setuptools-53.0.0-py3-none-any.whl
future-0.18.2.tar.gz
pefile-2019.4.18.tar.gz
altgraph-0.17-py2.py3-none-any.whl
macholib-1.14-py2.py3-none-any.whl
pyinstaller-3.3.1.tar.gz
這個時候我們這個文件夾內就是這樣的:
把這個文件夾考到離線的電腦上,在prompt裏執行命令:
cd .\Desktop\path ##先進入這個文件夾內
pip install -r requirement.txt ##按照腳本內安裝包的順序安裝庫
方法二:使用本地索引依賴包(推薦)
pip提供了可以在本地目錄搜索依賴包的選項,這樣安裝的好處是以前安裝過的依賴包不會更新,避免出現升級帶來的bug。
pip install --no-index --find-links=C:\Users\path\ pyinstaller
大功告成!
補充:
關於pipdeptree和pipreqs。
pipdeptree可以列出一個庫所需要的所有依賴庫以及版本號,也可以列出哪些庫依賴這個庫。
首先是安裝pipdeptree
pip install pipdeptree
然後就是:
pipdeptree -p pyinstaller ##列出依賴庫
列出那些庫依賴這些庫
pipdeptree -p pyinstaller -r
pipreqs主要是用來導出項目所需要的庫
首先還是安裝
pip install pipreqs
之後:
# 使用步驟
1.在項目根目錄下執行命令
pipreqs ./ # 報錯就執行下面這條
pipreqs ./ --encoding=utf-8
2.可以看到生成了requirements.txt文件
3.執行下面代碼就會把項目用到的所有組件裝上
pip3 install -r requirements.txt