日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python人工智能方向第三方库_Python进阶-第三方库管理和虚拟环境

發布時間:2023/12/3 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python人工智能方向第三方库_Python进阶-第三方库管理和虚拟环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文為《爬著學Python》系列第十三篇文章。

Python能在這幾年火起來,靠的不是網上一大片的爬蟲和服務器后端知識的應用(本專題就是這樣的,這么說真的好嗎?不過我們總得認清事實是吧。),靠的是Python搭上了大數據和人工智能的風。而Python之所以能很好地適應人工智能方面的應用,不是因為該語言對這方面進行了優化,我認為主要的原因有以下兩點:一個是簡單易學,方便了數學、工程和金融等行業各領域的對新技術開放包容的人士入門;另一個是種類豐富而且文檔詳實的第三方庫滿足了不同的需求。前者讓更多人加入到Python的行列中來,后者讓Python快速實現功能的能力非常強大。

今天我們主要講講Python的第三方庫的管理。這方面的例子有很多,比如剛才提到的數據處理機器學習,那么不得不提的是SciPy,NumPy和scikit-learn想必很多人都不陌生。不過本專題不是為了學這個,本專題是借Python學習互聯網相關知識,所以我們以request和flask為例(哇,突然感覺自己過時了,但是既然本來決定好了專題內容,現在也不臨時改了。況且我也不會啊,#無奈。而且我也沒精力同時更新兩個專題啊,#攤手。)。

上面是廢話,下面是正文。

pip

沒錯,首先聲明,我們主要用pip來下載第三方庫,實在特殊的環境才會使用easy_install。原因也很簡單,virtualenv都開始自帶pip了,我們跟著大佬養成習慣就好啦。

說了幾句可能有新手還不知道pip到底是什么東西。簡單來說就是Python的yum,好吧這可能是廢話,操作過RedHat不會不知道pip。真正地簡單來說,pip是一個用來便捷管理Python第三方庫的命令行工具。由于前面提到過我們主要用Windows示例,我們就用PowerShell來演示。

如果說不知道PowerShell是什么,可以理解為新一代的cmd。如果是以Windows作為主力開發環境,建議把PowerShell固定在任務欄。想要了解PowerShell的更多知識,可以參考Getting Started with PowerShell 3.0 | Channel 9。其中一個主講Jeffery Snover是PowerShell的主力開發工程師,是微軟非常厲害的服務器架構和管理方面的大牛,在C9可以免費看到大牛手把手教你敲腳本,如果對英文不自信,該系列甚至還有中文字幕!

之所以如此介紹PowerShell,是因為它真的非?!皃owerful”,而且我們可以用PowerShell來熟悉Shell編程,熟悉腳本編寫。說到底我們是來學習知識的,不要死盯著pip。如果進度許可,以后我可能會給一個PowerShell腳本爬蟲實例(大概會吧)。是的,PowerShell的一些特性使得他原生地可以非常完美地實現靜態網頁的爬蟲功能,甚至要比Python更優雅,你就說powerful不powerful。

好了言歸正傳,win+r打開運行命令,輸入powershell即可打開命令行窗口。我們就可以直接使用pip命令來下載第三方庫了。

如果提示沒有該命令,先確保已經安裝Python(開個玩笑),我們可以去設置環境變量。既然就在PowerShell,那么不妨就用它來設置好了(嫌麻煩可以直接我的電腦-右鍵屬性-高級系統設置-高級-環境變量-用戶變量-Path-加上Python文件夾和scripts文件夾或bin文件夾)。查看所有本地環境變量可以直接查看虛擬驅動器,查看具體的環境變量可以查看全局變量:

PS C:\> ls env:

Name Value

---- -----

ALLUSERSPROFILE C:\ProgramData

APPDATA C:\Users\somarl\AppData\Roaming

...//其他就省略了

或者

PS C:\> $env:path

I:\SecureCRT\;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client

\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPower

Shell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Fi

les\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R)

Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine C

omponents\IPT;C:\Program Files\Calibre2\;I:\Git\cmd;I:\mysql-5.7.18-winx64\bin;...//還有一大串就省略了

添加環境變量也很簡單

PS C:\> $Env:path=$Env:Path+";I:\Anaconda3\Scripts;I:\Anaconda3\Scripts"

這里只是我的示例,PowerShell不是我們要介紹的重點,這幾句命令非常簡單,沒有用到pipeline,很容易理解。

總之只要在命令行中輸入pip回車能夠進入庫管理工具就可以了。

virtualenv

安裝

我們就用虛擬環境工具包作為外部庫的第一個示例。使用pip安裝外部庫非常簡單,只要輸入

pip install virtualenv

或者某些情況下(比如有些Linux不同的設置下)會需要輸入

pip3 install virtualenv

如果沒有安裝過,那么pip就會自動尋找適配的版本開始下載安裝。這里面存在以下幾個問題:

找不到適配的版本怎么辦

下載速度太慢怎么辦

安裝失敗怎么辦

首先適配的版本找不到的話,有可能是平臺(Windows/Linux/Unix)的原因,也有可能是數位的原因(32/64),也有可能是Python版本的原因(2.4/2.7/3.2/3.5)。這種錯誤不會指出到底是哪個不適配,具體可以去PyPI查看,PyPI是Python官方的庫索引,我主要用來查看各種庫的兼容信息。

下載速度太慢可以換國內的鏡像。這個在后面介紹conda的時候會再介紹。我們可以臨時在命令行后面加上參數

pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple

這是清華的鏡像,我自己用的是豆瓣的鏡像,好像阿里也有鏡像,這些百度一下就可以看到。Linux習慣了改各種配置文件,但是Windows總覺得有些不舒服。conda會有比較人性化的命令行直接設置永久的鏡像。

安裝失敗的話,一般會有報錯信息,可以根據報錯信息處理。一般來說Windows平臺常見的報錯是CPython庫的C依賴相關問題報錯,Linux平臺常見的報錯是權限不足的問題。后者比較好解決,直接在命令前面加上sudo就可以了。

CPython的問題有以下幾種解決辦法:

PyPI或者Github找找看有沒有類似的純Python庫。這么做其實不太推薦,但是這么做也有好處,就是如果完全不用CPython包可以用PyPy加速。

去LFD找找看有沒有編譯好的wheel文件,全稱叫Python Extension Packages for Windows,這是比較推薦的解決方案。關于wheel文件的使用方法下面會講到。

去庫的Github地址找官方的針對Windows的編譯好的文件(不一定有,一般是沒有的),或者自己編譯(不推薦,我以前做過這種事,體驗很差)。

安裝支持環境,這個看上去最理所當然的方法反而是我不太喜歡的。原因在于VS有些臃腫,我還是喜歡用VS6.0。

關于wheel文件的使用,其實很簡單,就是pip安裝的時候不要指出安裝包的名字,直接給出wheel文件的地址就可以了。比如:

pip install G:\action\tmp\Twisted?17.9.0?cp36?cp36m?win_amd64.whl

大概是這樣吧,很久沒用過,應該是這樣的。如果失敗了,試試先pip install wheel。

OK,那么就算講完了怎么用pip安裝擴展包了。

卸載、更新、查看

和安裝對應,卸載只需要輸入

pip uninstall virtualenv

非常合理的做法。至于更新,其實為了程序的穩定運行和兼容性,這個功能其實是不常用的,這也是pip默認你想要更新的話其實就和直接重新安裝沒區別,這個邏輯我覺得設計也算巧妙(conda有update功能,pip沒有)。

至于你如果要批量更新,去StackOverflow或者百度找會有很多腳本,或者Anaconda控制臺,Pycharm都有相應的功能可以實現。當然,我并不推薦做這種事情。這也是我們會需要虛擬環境的原因,庫文件穩定性是首要考慮的問題,所以更新要慎重。我的意思也不是不建議各位更新,只是不建議批量更新帶來不必要的麻煩。

查看庫有兩種,一種是查看安裝了哪些庫

pip list

一種是查看某個庫的信息。

pip show virtualenv

list命令也有相關的參數,也可以寫進配置文件中,這里不贅述了。show命令主要是用來看安裝地址location,環境依賴requires,開源協議license,當然,有些有主頁的可以找到一些文檔。

關于pip的講解到此為止,如此簡單的工具講了這么多廢話了。還有一些功能沒講呢,會穿插在virtualenv和conda中講。

virtualenv的用法

我們講了這么久我們需要虛擬環境,那么virtuaenv是什么,到底怎么用呢。

virtualenv是一個虛擬環境工具,用來構建一個Python程序運行的特殊環境。之所以需要特殊的環境,是為了方便移植,比如你可以讓別人輕松地還原你的源程序運行的環境。同時它也方便的環境測試與管理,比如我們可以測試在不同的Python版本不同的外部庫版本下程序的表現,就可以用虛擬環境來做到,而不必在電腦上安裝多個版本Python,避免互相沖突。

具體的各種參數我就不講了,virtualenv可以指定Python版本,可以指定包括哪些庫。我們默認就是用virtualenv來運行我們主要Python版本,主要是為了管理外部庫環境復制和還原,因此我們使用最簡單的命令就可以了(Python版本的切換我傾向于用Conda,后面會講到,比較徹底)。

PS G:\action\pipl> virtualenv venv

如果安裝了virtualenv,那么直接進入項目根目錄輸入virtualenv venv就會創建一個目前Python版本的虛擬環境。其中venv是這個環境的名字,一般都叫這個。

在比較新的版本virtualenv中,這種默認創建方式會自動安裝pip、setuptools、wheel三件套,你也可以通過如--no-pip的參數來防止安裝這些包。

最簡單的創建方式是有它的道理的,因為這是最常見的應用場景,絕大多數情況下確實是virtualenv venv就能解決問題了。創建完成后目錄下會多出一個虛擬環境為名字的文件夾。

進入虛擬環境

創建完成后我們需要進入虛擬環境,否則命令行怎么知道你到底想在哪個環境執行命令呢。激活的方式很簡單

PS G:\action\pipl> venv\Scripts\activate

如果出現權限問題或者安全問題。用管理員運行的PowerShell也是無濟于事的,直接將出錯信息百度,會有更改安全策略的解決方式。如果是Linux環境,注意source要把Scripts改成bin,值得一提的是Windows環境下激活虛擬環境會卡住幾秒,Linux幾乎是秒進。成功進入后,命令行會有虛擬環境的前綴。

這時我們再進行一些動作,都是虛擬環境下了,比如說我們進入Python試試引入一些安裝過的外部庫。

在外部環境中我肯定是安裝了requests的,這怎么說也算是爬蟲的最關鍵的庫了。我們不妨試試剛學的列出安裝過的Python庫。

可以看到除了三件套確實什么都沒有。我們可以試試安裝外部庫

可以看到確實可以安裝。

一下子多了許多庫出來。

退出虛擬環境

這個很簡單,只要在虛擬環境中輸入deactivate就能退出。

環境還原

現在我們來講剛才提到的,關于環境還原的問題。如果我在開發中用到了一些依賴環境,那么我該如何讓別人知道我用了哪些庫呢?是不是對著代碼一個個去找import了哪些庫?這樣做不僅麻煩而且容易遺漏,文件一多就會是很糟糕的體驗了。

換個思路,我們只要讓別人知道用pip安裝過哪些庫就可以了。我們可以用pipeline把powershell的pip list屏幕輸出保存到文件中。但是還有更簡單的方法,pip內置了這樣方法。

(venv) PS G:\action\pipl> pip freeze >requirements.txt

這樣項目根目錄下會多出一個需求文件。打開來看一下。

可以看到除了三件套以外的包都在里面了。使用pip生成需求文件還有一個好處,就是可以用pip快速還原環境。比如我們再新建一個虛擬環境,并且還原剛才的環境(注意要把requirements.txt放在新項目的根目錄下)。

PS C:\Users\somarl> cd G:\action\pipm

PS G:\action\pipm> virtualenv venv

Using base prefix 'I:\\Anaconda3'

New python executable in G:\action\pipm\venv\Scripts\python.exe

copying I:\Anaconda3\python.exe => G:\action\pipm\venv\Scripts\python.exe

Installing setuptools, pip, wheel...done.

PS G:\action\pipm> cp G:\action\pipl\requirements.txt G:\action\pipm\requirements.txt

PS G:\action\pipm> venv\Scripts\activate

(venv) PS G:\action\pipm> pip install -r requirements.txt

在實際操作中,我們的項目一般是用git clone下來的,所以不會需要手動去找requirements.txt,而且一般虛擬環境會被gitignore掉。這也是為什么大家都用venv當作虛擬環境名字,是為了方便git的相關操作。當然,在上面的操作中我也可以不復制requirements.txt文件,直接在pip install -r中參數設置成之前的路徑就可以,這里是為了還原一般的使用場景,而Git相關的知識我還沒有講過,所以目前先不管它。

當然這也不是一勞永逸的。我們可以看看還原了哪些庫。

注意到Twisted不見了,這也是我拿它作示例的原因。這就是我們剛才說過的Windows環境下pip安裝可能出錯的地方。錯誤信息是這樣的

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Builds": http://landinghub.visualstudio.com/visual-cpp-build-tools

因此我們確實有的時候需要注意到這些問題。如果你用別人的自構爬蟲框架,Twisted是出現率非常高的庫。我們可能會需要手動安裝這樣的庫。不僅爬蟲,科學計算相關包中對CPython的依賴其實更明顯,很多庫需要手動安裝?;蛘吣憧梢允褂肔inux,當然如果這種程度的問題都有很大的困擾,那么Linux系統給你帶來的困擾可能會更多,對計算機原理和操作系統不是特別了解的不太推薦使用Linux。

Conda

除了virtualenv以外,我們提到虛擬環境,我比較推薦的還有Conda。在我看來Conda其實更適合本地環境的構建而不是虛擬環境的構建,我個人是把Conda當作增強版的pip來使用的。

Conda強在不僅可以改變環境的包,甚至可以改變環境本身。比如說我的電腦裝的是Python3.6,但是后來我發現我其實比較喜歡Python3.5怎么辦呢。我不必每次創建一個虛擬環境,我不必卸載Python3.6重新安裝一個Python3.5,我不必更改各種軟鏈(Linux)。Conda可以把默認的Python運行環境改掉。

所以說,如果說pip是管理Python庫的,那么Conda可以說是用來管理Python的(它本身也可以管理庫,而且比pip更強,只是包的數量不及pip多)。至少我目前是這么用的。而且其實熟悉Linux的同學可能知道,Conda不僅僅適用于Python,它的適應面還能更廣。

Conda和pip以及virtualenv的關系,就好比Tornado和Django以及uWSGI甚至Nginx的關系。它是一種類似的交叉包容但又有所側重的關系。

所以Conda是非常全能的工具。它可以做到pip能做到的事情,它可以做到virtualenv能做到的事情,它還可以做到這兩個工具做不到的其他的事情??上У氖聦嵤荰ornado不僅功能上無所不能、性能也強勁得讓人刮目相看,但卻依然沒有Django受歡迎,也不如Flask,幾乎可以說和Bottle、web2py一樣是被冷落的那類框架。

不過好在Conda還是非常受歡迎的。因為它不僅功能強,它的虛擬環境其實比virtualenv更加純粹。它的Python包管理依賴追蹤能力是pip望塵莫及的。但是出于習慣,現在主流的虛擬環境工具是virtualenv,主流的庫管理工具是pip,這兩個也是我今天介紹的重點。但我還是要推薦一下Conda,它好到值得你去使用。

具體的使用技巧,本文就不再介紹了,篇幅有限是一方面,另一方面我自己對Conda的使用也算不上理解多深,就不獻丑了。有興趣的不妨去探索吧。

另外再提一下Python3.3以上版本其實是有自帶的虛擬環境工具的,直接就叫作venv,用它創建環境的方式是這樣的

python -m venv venv

要注意后面的那個venv是虛擬環境的名字,前面的那個是工具的名字。有趣的是它的體積小但性能其實也很強。使用方法和virtualenv大同小異,這里也不展開講了。

最后講些廢話

之前說好了在Conda相關內容中講怎么用命令行永久改鏡像,結果后來還是忘了。其實很簡單,Conda有config方法直接加參數--add channels 地址就行了。這樣就能避免在Windows系統中編輯配置文件的違和感了。我Conda用的是清華的鏡像,地址百度一下應該就有。

這篇還是以介紹pip和virtualenv為主,我能想到的大部分場景都盡量進行了說明,如果有缺漏的地方可以直接留言提出來。

鏈接

總結

以上是生活随笔為你收集整理的python人工智能方向第三方库_Python进阶-第三方库管理和虚拟环境的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。