Python 第三方庫(kù)安裝技巧

Python 是一門(mén)優(yōu)雅的語(yǔ)言,簡(jiǎn)潔的語(yǔ)法,強(qiáng)大的功能。當(dāng)然豐富的第三方庫(kù),更能加速開(kāi)發(fā)。那么問(wèn)題來(lái)了,如何安裝這些第三方庫(kù)(包)呢?

安裝第三方庫(kù)的方式其實(shí)不多。下面就介紹一些技巧。

源碼安裝

很多第三方庫(kù)都是開(kāi)源的,幾乎都可以在github 或者 pypi上找到源碼。找到源碼格式大概都是 ziptar.zip、 tar.bz2格式的壓縮包。解壓這些包,進(jìn)入解壓好的文件夾,通常會(huì)看見(jiàn)一個(gè) setup.py 的文件。打開(kāi)命令行,進(jìn)入該文件夾。運(yùn)行

python setup.py install

這個(gè)命令,就能把這個(gè)第三庫(kù)安裝到系統(tǒng)里,也就是你的 Python 路徑,windows大概是在 C:\Python2.7\Lib\site-packages。
Linux會(huì)在 /usr/local/lib/python2.7/dist-packages。
Mac 應(yīng)該在 /Library/Python/2.7/site-packages。如果是在 virtulenv環(huán)境下安裝,這個(gè)包就被安裝在所建立的虛擬環(huán)境下的 site-packages/目錄下。想要卸載這些庫(kù)也很簡(jiǎn)單,進(jìn)入 site-packages,直接刪掉庫(kù)文件就 OK 啦。當(dāng)然,這些安裝可能有一點(diǎn)麻煩,需要下載,解壓,再運(yùn)行安裝,卸載也不是很方便。有沒(méi)有一種工具,可以幫外面管理這些庫(kù)呢?

包管理器 (pip 和 easy_install)

現(xiàn)在很多編程語(yǔ)言,都帶有包管理器,例如 Rubygemnodejsnpm。Python當(dāng)然也不例外,擁有大名鼎鼎的 pipeasy_install。

前面說(shuō)到的pypi就是一些 python第三庫(kù)所在的源,使用 pip 或者 easy_install 安裝模塊,會(huì)搜索這個(gè)源,然后自動(dòng)下載安裝。比如我們需要安裝 flask 框架具體命令如下:

pip install flask

或者

easy_install flask

簡(jiǎn)單吧,一個(gè)簡(jiǎn)單的命令就搞定。卸載也很方便,例如我們需要卸載flask

pip uninstall flask

查看所安裝的包,包括系統(tǒng)自帶的和手動(dòng)安裝的

pip list

還可以搜索包

pip search flask

還可以重定向輸出項(xiàng)目使用的庫(kù)。

pip freeze > requirements.txt

這樣就會(huì)把該環(huán)境下的第三方庫(kù)重定向到 requirements.txt文件內(nèi),如果給別人安裝項(xiàng)目的依賴(lài),只需要運(yùn)行:

pip install -r requirements.txt

很方便吧。當(dāng)然,有時(shí)候,我們的網(wǎng)絡(luò)并不是那么順暢,pip是在線(xiàn)安裝的,可不可以離線(xiàn)呢?當(dāng)然可以啦,pip install 的第一步,就是在 pypi 上尋找包,然后下載到本地。如果網(wǎng)絡(luò)不好,可以先建一個(gè)本地的倉(cāng)庫(kù),把常用的包離線(xiàn)下載。比如可以下載 flask 的源碼

pip intall flask-master.zip

同樣也可以安裝。

最新版本的pip也支持git安裝,只需要使用其git地址就行

pip install git+https://github.com/kennethreitz/requests.git

不過(guò)這種安裝方式相當(dāng)?shù)穆?。它的原?lái)就是先clone到本地的臨時(shí)目錄,然后再安裝zip包。

虛擬環(huán)境相關(guān)安裝

當(dāng)然,上面介紹的,其實(shí)也是很普通很常見(jiàn)的方式,也算不上什么技巧。下面介紹的,則是一些需要了解原理和解決非常規(guī)問(wèn)題的技巧。

使用Python,我們會(huì)喜歡用 virtualenv建立虛擬環(huán)境,例如建立一個(gè) venv的虛擬環(huán)境。我們只需要 source進(jìn)去就可以使用pip安裝了。可是有時(shí)候,即使在虛擬環(huán)境下,使用了sudo的前綴(windows忽略),那么安裝的庫(kù)不是在虛擬環(huán)境,而是被安裝到系統(tǒng)下的site-package 目錄下了。

windows的用戶(hù)可能會(huì)很開(kāi)心,不需要注意這個(gè)問(wèn)題。當(dāng)然 windows 也同樣有著自己的問(wèn)題。在 windows上安裝python,一般是編譯好的二進(jìn)制包exe可執(zhí)行文件。通常有 32位和64位的python。對(duì)于第三方庫(kù),本來(lái)32和64不會(huì)有太大的差別。但是對(duì)于一些C寫(xiě)的python庫(kù),如mysqldbPIL, pillow,會(huì)發(fā)現(xiàn)使用 pip或者 easy_install 的方式會(huì)報(bào)錯(cuò):

Fixing python error: Unable to find vcvarsall.bat

原因大概是 windows上缺少一些 C編譯器東東。源碼需要編譯一下才能安裝,此時(shí) windows就很苦逼了。當(dāng)然,有一些好心人,幫您把常用的一些庫(kù)編譯成 exe 可執(zhí)行文件,放到了這個(gè)站點(diǎn)。你只需要尋找對(duì)于版本的,下載一鍵安裝。

可是,還有一個(gè)問(wèn)題,下載 exe 文件,運(yùn)行安裝,這個(gè)庫(kù)是被安裝到了系統(tǒng)的 site-package 目錄下,如果我在windows 建立了venv虛擬環(huán)境,這樣安裝不是歇菜了么?

別擔(dān)心,這個(gè)文章的真正技巧,就是為了解決這個(gè)問(wèn)題的。我們來(lái)安裝64位的 mysqldb。先下載 MySQL?python?1.2.5.win?amd64?py2.7.exewindows 上,用命令行進(jìn)入虛擬環(huán)境 venv。然后運(yùn)行

 easy_install MySQL?python?1.2.5.win?amd64?py2.7.exe

完美解決,在 venv 虛擬環(huán)境,將mysqldb 庫(kù)安裝到了venv下。

有了上面三個(gè)方式,幾乎涵蓋 python 所有平臺(tái)的第三方庫(kù)安裝。不過(guò)話(huà)說(shuō)回來(lái),盡管 Python 是跨平臺(tái),開(kāi)發(fā)環(huán)境,還是盡量使用 Linux或者MacOS,這兩個(gè)系統(tǒng)有更好的工具以及省去很多莫名其妙的問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文為《爬著學(xué)Python》系列第十三篇文章。 Python能在這幾年火起來(lái),靠的不是網(wǎng)上一大片的爬蟲(chóng)和服務(wù)器后端...
    SyPy閱讀 5,085評(píng)論 0 5
  • 譯者按:原文寫(xiě)于2011年末,雖然文中關(guān)于Python 3的一些說(shuō)法可以說(shuō)已經(jīng)不成立了,但是作為一篇面向從其他語(yǔ)言...
    EarlGrey閱讀 69,863評(píng)論 7 124
  • Python為主流開(kāi)發(fā)語(yǔ)言, 用python 開(kāi)發(fā)的程序越來(lái)越多。 方便的是大多l(xiāng)inux系統(tǒng)里面都默認(rèn)集成了py...
    53921f46e0b9閱讀 64,631評(píng)論 3 18
  • (這是很早之前寫(xiě)的但內(nèi)容沒(méi)有太過(guò)時(shí),發(fā)到這邊補(bǔ)全一下...)面向初學(xué)者介紹Python相關(guān)的一些工具,以及可能遇到...
    jagttt閱讀 67,514評(píng)論 3 44
  • 新年已過(guò),假期過(guò)半。你是否完成了當(dāng)初和自己立下的約定? 上了大學(xué)之后,整天忙忙碌碌(雖然不知道在忙啥),有很多想做...
    劉夏閱讀 2,014評(píng)論 27 91

友情鏈接更多精彩內(nèi)容