Python安裝第三方庫(kù)攻略(pip和Anaconda)
常用的python第三方庫(kù)安裝工具大概有三種:
1、pip (推薦)
2、easy_install
3、setup.py
常見(jiàn)的安裝包格式:
1、whl (推薦,一種二進(jìn)制的)
2、tar.gz
3、zip
4、egg(第一個(gè)主流打包格式)
whl和egg文件可以直接將后綴名改為zip,作為zip解壓,但在有網(wǎng)的模式下,whl不必解壓,用pip的安裝命令即可
setup.py
setup.py常用于源碼安裝,由于pypi官網(wǎng)下載包非常慢,因此有人會(huì)選擇下載后安裝,也有人會(huì)去GitHub上下載源碼來(lái)安裝,setup.py常被用與后者。
一般GitHub上的源碼大多為zip、tar.gz、tar.zip、 tar.bz2這類壓縮文件,而它們往往自帶setup.py文件。
安裝:
1、下載zip并解壓;
2、打開(kāi)cmd,進(jìn)入解壓后的路徑;
3、依次執(zhí)行以下代碼
命令如下:
python setup.py build python setup.py install
Windows的安裝包存放的路徑為:python安裝路徑下的\Lib\site-packages。
Linux的路徑應(yīng)該為: /usr/lib/python2.7/site-packages。 (路徑不一定,視情況而定,有的可能在/usr/local/lib)
缺點(diǎn):
但是這種安裝方法有一種非常大的毛病,就是使用該方法安裝的包,無(wú)法通過(guò)pip uninstall卸載干凈。
需要手動(dòng)到/usr/bin/python2.7/site-package(其中python處為對(duì)應(yīng)的Python版本)目錄下刪除。對(duì)于類UNIX系統(tǒng)來(lái)說(shuō),64位機(jī)更麻煩的是,在/usr目錄下分為lib和lib64,這兩個(gè)目錄下都會(huì)有。
網(wǎng)上有卸載方法,但我試過(guò)不太奏效:
卸載
記錄安裝后文件的路徑 python setup.py install --record files.txt 刪除這些文件 cat files.txt | xargs rm -rf
一般情況下其實(shí)不建議使用這種,pip其實(shí)也是可以直接安裝壓縮包的,后面會(huì)講。
easy_install
實(shí)際上,在Python中安裝第三方模塊,是通過(guò)setuptools這個(gè)工具完成的。而easy_install和pip是封裝了setuptools的兩個(gè)包管理工具。
我們要使用easy_install,首先需要setuptools,當(dāng)然,現(xiàn)在的版本里都自帶了,python3.6以后的略微有點(diǎn)不一樣,后面會(huì)講。
但是還是可以提一下:
1、打開(kāi)官網(wǎng) http://pypi.python.org/pypi/setuptools ,目前最新版的只有whl和zip兩種格式(以前是有exe的,現(xiàn)在似乎沒(méi)有了,但我感覺(jué)現(xiàn)在更方便一點(diǎn))。
但是whl前提是要用pip安裝,而pip有的時(shí)候,我們可能需要使用easy_install才能安裝,有pip我們也不怎么用easy_install了,所以我們只能下載zip。
2、下載后解壓,會(huì)發(fā)現(xiàn)里面有easy_install.py和setup.py,可以直接使用。
如果是exe,安裝后雙擊 ez_setup.py安裝,或在cmd執(zhí)行命令:
python easy_install.py
安裝好easy_install之后就可以用來(lái)安裝包了,但是建議將easy_install所在路徑加入環(huán)境變量PATH,否則每次安裝包都需要先進(jìn)入該路徑。
Windows的easy_install路徑為:Python下的Scripts目錄
。
Linux的路徑應(yīng)該為: /usr/local/bin
。 (路徑不一定,視情況而定)
easy_install的使用方法,如安裝pip,直接在后面加上包名即可:
# 指定包名 easy_install pip # 指定網(wǎng)址 easy_install -f *.html pip # 安裝tar/egg easy_install package.tar/egg # 安裝zip,先解壓,然后進(jìn)入 easy_install .
卸載
easy_install -m pip
升級(jí)
easy_install --upgrade pip
使用教程:
http://peak.telecommunity.com/DevCenter/EasyInstall#downloading-and-installing-a-package
pip
使用
# 安裝 pip install package # 卸載 pip uninstall package # 查看所安裝的包 pip list # 搜索包 pip search package # 更新 pip install -U package # 重定向輸出項(xiàng)目使用的庫(kù)到 requirements.txt文件內(nèi) pip freeze > requirements.txt #在其他環(huán)境上安裝項(xiàng)目的依賴 pip install -r requirements.txt
安裝tar.gz和zip使用pip是最簡(jiǎn)單的,不需要解壓,前兩種還需要解壓。
批量安裝
有的時(shí)候你會(huì)發(fā)現(xiàn)在沒(méi)有網(wǎng)絡(luò)的時(shí)候,你想要安裝wheel文件,直接pip會(huì)出錯(cuò),這里有一種辦法,并且可以批量,就是利用requirements.txt文件。但是,這之前我們還要知道,我們之所以安裝wheel文件會(huì)失敗,是因?yàn)楸緳C(jī)的python不支持下載的whl文件。
1、我們將所有包下好,包括whl、tar.gz等。
2、然后將包的版本寫(xiě)入requirements.txt,并將它們放在一起。
3、可以直接執(zhí)行命令,也可以將該命令寫(xiě)入腳本。
命令如下:
pip install --use-wheel --no-index --find-links=./ -r requirements.txt
批量卸載
pip uninstall -y -r requirements.txt
其中-y代表卸載時(shí)不詢問(wèn)是否刪除,即yes的意思,可以省略,但在腳本里的時(shí)候還是加上。
wheel
1、wheel 包的命名格式
{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl
前兩個(gè)分別代表包名和版本,前面查看wheel版本輸出的三元素元組分別代表{python tag}-{abi tag}-{platform tag}。
python-tag —— python實(shí)現(xiàn),主要分為五種:
- py - 無(wú)實(shí)現(xiàn)特定的拓展
- cp - CPython,也就是通常使用的 Python 實(shí)現(xiàn)
- ip - IronPython,跑在 Windows CLI 平臺(tái)上的 Python 實(shí)現(xiàn)
- pp - PyPy,帶 JIT 的 Python 實(shí)現(xiàn)
- jy - Jython,跑在 JVM 上的 Python 實(shí)現(xiàn)
如request的whl名字里的py2和py3分別代表支持py2.x和py3.x,兩個(gè)同時(shí)存在則代表兩個(gè)版本都支持,以“.”分隔。
abi tag
說(shuō)實(shí)話,我沒(méi)太看懂這是個(gè)什么東西,只大概知道分為以下幾種:
- with-pydebug (flag: d ) ——看起來(lái)像是用于debug的
- with-pymalloc (flag: m ) —— 一個(gè)專門(mén)的對(duì)象分配器
- with-wide-unicode (flag: u ) —— 默認(rèn)開(kāi)啟的
- none —— 不區(qū)分
如果打包時(shí)沒(méi)辦法判斷 abi 類型,生成的 abi tag 會(huì)是 none。而如果 Python 包是不依賴特定的 abi 的純 Python 實(shí)現(xiàn),生成的 abi tag 也是 none。
大部分我們下載的的是類似mu結(jié)尾的,如cp27mu。
platform tag —— 系統(tǒng)
- win32 —— Windows32位
- win_amd64 —— Windows64位
- linux_i386 —— Linux32位
- linux_x86_64 —— Linux64位
- any —— 任意
當(dāng)然,遠(yuǎn)不止這些,我曾經(jīng)裝過(guò)grpcio這個(gè)庫(kù),在官網(wǎng)里找到它發(fā)現(xiàn)五花八門(mén),當(dāng)時(shí)不知道要下哪一個(gè),后來(lái)才找到那個(gè)查看版本的命令。
可以看到,就截圖內(nèi)的就有涉及到大概八種不同的系統(tǒng)及版本,根據(jù)命令查看whl版本,發(fā)現(xiàn)支持manylinux1_x86_84版本,原因是我當(dāng)時(shí)用的是centos7,并且安裝的時(shí)候是安裝的最?。∕ini)的形式,因此我下了manylinux1_x86_84的其中一個(gè)。
2、python環(huán)境支持哪種wheel文件
pip10以下的版本查看:
>>> import pip >>> print(pip.pep425tags.get_supported())
pip10以上的版本查看:
>>> import pip._internal; >>> print(pip._internal.pep425tags.get_supported())
可以看到如圖:
可以看到,這是一個(gè)由多組元組組成的列表,這里面的三個(gè)東西有沒(méi)有感覺(jué)很眼熟,我們?cè)倏磜heel文件的名稱組成,例如requests:
requests-2.22.0-py2.py3-none-any.whl
再如
grpcio-1.21.1-cp27-cp27m-manylinux1_x86_64.whl
當(dāng)然,后者在Windows上的Python里執(zhí)行是不可能看到的。
下載源
國(guó)內(nèi)pypi官網(wǎng)下載源有時(shí)候會(huì)比較慢,我們可以指定源
pip install package -i http://pypi.douban.com/simple --trusted-host pypi.douban.compipy
國(guó)內(nèi)鏡像目前有:
- 豆瓣 http://pypi.douban.com/simple/
- 阿里云 http://mirrors.aliyun.com/pypi/simple/
- 中國(guó)科技大學(xué) https://pypi.mirrors.ustc.edu.cn/simple/
- 清華大學(xué) https://pypi.tuna.tsinghua.edu.cn/simple/
- 華中理工大學(xué) http://pypi.hustunique.com/
- 山東理工大學(xué) http://pypi.sdutlinux.org/
第三方庫(kù)下載地址
1、https://pypi.org (官方)
2、https://www.lfd.uci.edu/~gohlke/pythonlibs/(很多官網(wǎng)沒(méi)有的這里有)
python3.6前后的版本pip安裝方式的不同
Python3.6和之前的版本(包括2.x和3.6之前的3.x)有一個(gè)很大的區(qū)別,安裝完之后Scripts目錄為空,當(dāng)我們想執(zhí)行更新pip時(shí)出錯(cuò):
python -m pip install -U setuptools
報(bào)錯(cuò):
No module named pip
解決辦法:
python -m ensurepip
離線安裝前查看某個(gè)指定的包的所有依賴項(xiàng)
我們有的時(shí)候開(kāi)發(fā)環(huán)境分內(nèi)外網(wǎng),但是又不得不安裝一些第三方庫(kù),需要去外網(wǎng)下載好wheel拷到內(nèi)網(wǎng),而這些第三方庫(kù)往往依賴于其他包。如果你在內(nèi)網(wǎng)試,每次一個(gè)沒(méi)有又要去外網(wǎng)重新下了拷進(jìn)來(lái),不勝其煩。
而conda有一個(gè)非常棒的功能,就是可以查看某個(gè)python版本的某個(gè)庫(kù)的所有依賴項(xiàng)及其對(duì)應(yīng)的版本,如下,指定查看3.5的某個(gè)包的所有依賴,較老版本的命令是這樣的:
conda info package_name python=3.5
新版本的命令(可離線查看),沒(méi)研究出來(lái)怎么指定python版本:
conda search package_name --info [--offline]
其實(shí)pip也有,但只能顯示相關(guān)依賴包,但不能顯示具體對(duì)應(yīng)的版本:
conda search package_name --info [--offline]
可查看:https://cloud.tencent.com/developer/ask/145565
conda
我16年接觸python的時(shí)候,學(xué)爬蟲(chóng)被安裝第三方庫(kù)折騰的差點(diǎn)放棄,尤其是Scrapy框架,后來(lái)一陣摸索好不容易發(fā)現(xiàn)了Anaconda這么個(gè)好東西。
Anaconda是個(gè)集成環(huán)境,里面有大量的常用第三方庫(kù)以及科學(xué)計(jì)算相關(guān)的包,感覺(jué)起來(lái)裝任何包都很輕易,沒(méi)有再為包的事情煩心過(guò),里面的命令是conda,和pip類似,但不僅pip,還有虛擬環(huán)境的作用。命令也類似,只要把pip替換為conda即可,但也可以使用pip命令。
如果想將py2和py3的Anaconda裝在一起,只要把其中一個(gè)安裝在另一個(gè)已經(jīng)裝好的envs路徑下即可。
conda具體命令查看:
https://conda.io/projects/conda/en/latest/commands.html#
virtualenv
對(duì)于安裝包,如果覺(jué)得怎么都安裝不上,使用虛擬環(huán)境也是個(gè)很不錯(cuò)的選擇,
# 安裝(python2) pip install virtualenv # 創(chuàng)建虛擬環(huán)境,需要預(yù)先創(chuàng)建一個(gè)目錄 virtualenv venv_name # Windows激活虛擬環(huán)境 #1、進(jìn)入虛擬環(huán)境所在目錄下的Scripts目錄 cd venv_name/Scripts # 2、激活 activate # 3、退出,linux同 deactivate # linux進(jìn)入并激活虛擬環(huán)境目錄 source venv_name/bin/activate
參考文檔
1、https://pip.pypa.io/en/stable/reference/
2、https://www.cnblogs.com/dtest/p/4507980.html
3、https://bu-choreography.iteye.com/blog/1113059
4、https://www.cnblogs.com/amengduo/p/9586354.html(安裝史)
5、https://www.python.org/dev/peps/pep-0425/
6、https://www.python.org/dev/peps/pep-3149/
7、https://segmentfault.com/a/1190000007591736
8、https://docs.python.org/2.3/whatsnew/section-pymalloc.html
到此這篇關(guān)于Python安裝第三方庫(kù)攻略(pip和Anaconda)的文章就介紹到這了,更多相關(guān)Python安裝第三方庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python?Anaconda以及Pip配置清華鏡像源代碼示例
- 深度學(xué)習(xí)環(huán)境配置之Anaconda安裝和pip源方式
- anaconda中安裝的python環(huán)境中沒(méi)有pip3的問(wèn)題及解決
- 如何修改pycharm使用anaconda環(huán)境后的pip install安裝路徑問(wèn)題
- pip/anaconda修改鏡像源,加快python模塊安裝速度的操作
- 在pycharm中配置Anaconda以及pip源配置詳解
- 使用anaconda的pip安裝第三方python包的操作步驟
- Anaconda環(huán)境中conda與pip命令的區(qū)別小結(jié)
相關(guān)文章
Pyhthon中使用compileall模塊編譯源文件為pyc文件
這篇文章主要介紹了Pyhthon中使用compileall模塊編譯源文件為pyc文件,需要的朋友可以參考下2015-04-04簡(jiǎn)單談?wù)凱ython中的元祖(Tuple)和字典(Dict)
這篇文章主要介紹了關(guān)于Python中元祖(Tuple)和字典(Dict)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04Python摸魚(yú)神器之利用樹(shù)莓派opencv人臉識(shí)別自動(dòng)控制電腦顯示桌面
這篇文章主要介紹了Python摸魚(yú)神器樹(shù)莓派opencv人臉識(shí)別自動(dòng)控制電腦顯示桌面,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Python標(biāo)準(zhǔn)庫(kù)筆記struct模塊的使用
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)筆記struct模塊的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02keras如何指定運(yùn)行時(shí)顯卡及限制GPU用量
這篇文章主要介紹了keras如何指定運(yùn)行時(shí)顯卡及限制GPU用量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Python pytest裝飾器總結(jié)(實(shí)例詳解)
這篇文章主要介紹了Python pytest裝飾器總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04django商品分類及商品數(shù)據(jù)建模實(shí)例詳解
這篇文章主要介紹了django商品分類及商品數(shù)據(jù)建模實(shí)例代碼內(nèi)容,需要的朋友們學(xué)習(xí)參考下。2020-01-01