當我們不再重復“造輪子”時,會使用大量前人打造的工具,為了管理好這些工具的引用和依賴關系,我們必須有良好的意識和趁手的工具。今天這一講,就是在一切變得復雜之前,讓你找到新的方法來節(jié)省時間和精力。
開發(fā)者們對自己的開發(fā)環(huán)境總是有著各種各樣的偏好。Vim 還是 Emacs?使用 tab 還是空格縮進?Virtualenv 和 Anaconda 哪個更好?紛爭不斷,爭論不休。今天我們會與大家分享自己用于搞定數(shù)據(jù)處理和機器學習的開發(fā)環(huán)境。
你不必照著我的配置來弄,但也許其中的一些可以啟發(fā)你搞定專屬的開發(fā)環(huán)境。
Pip
首先要講講 Pip。Pip 是 Python 的包管理工具。Python 內置 pip 已經(jīng)有一些日子了,所以如果你裝了 Python,通常都會自帶 pip。
Pip 被用來安裝各種包,比如 tensorflow、numpy、pandas 和 jupyter,同時還會將它們的依賴一同安裝好。
pipinstall
許許多多的 Python 資源都通過 pip 包的形式來傳輸。有時你會在某個包含 Python 腳本的目錄下看到一個 requirement.txt 文件。通常,那個文件描述了當前項目所需的所有 pip 包,通過下面的命令即可將它們都安裝到當前目錄。
pipinstall-rrequirements.txt.
作為整個 pip 包生態(tài)的一份子,各種各樣的版本號、依賴信息充斥其中。有時我會針對不同項目使用不同版本的庫(pip 包),所以我需要有一種能夠針對獨立環(huán)境配置一組包依賴關系的方式。

同時在一臺機器上搞 Web 開發(fā)和數(shù)據(jù)科學相關研究會讓你電腦上的 Python 包版本系統(tǒng)混亂不堪
目前有兩種非常受歡迎的方式用于管理不同的 pip 包:virtualenv 和 anaconda。
Virtualenv
Virtualenv 支持你創(chuàng)建可命名的“虛擬開發(fā)環(huán)境”,在其中你就能按照單獨的習慣安裝 pip 包了。
如果你想要針對每個環(huán)境獨立控制對各類 pip 包的管理,那么這就是一款絕佳的工具比如,你可以為 Web 開發(fā)創(chuàng)建獨立的環(huán)境,定義所需的依賴庫,然后為數(shù)據(jù)相關的開發(fā)研究建立截然不同的環(huán)境。
這樣一來,你再也不用顧慮各種毫無關系的依賴包在開發(fā)環(huán)境中存在,也可以創(chuàng)建具有專門用途的開發(fā)環(huán)境。
Anaconda
如今,如果你主要從事數(shù)據(jù)相關的工作,那么 Anaconda 將會是一個不錯的選擇。Anaconda 由 Continuum Analytics 打造,并且是一個集成了許許多多數(shù)據(jù)相關 Python 庫的發(fā)行版。
Anaconda 的流行應當歸功于它只需一次安裝就能得到數(shù)據(jù)科學、機器學習相關的大量工具,所以它勝在快速和簡單的安裝配置過程上。
與 Virtualenv 一樣,Anaconda 也引入了創(chuàng)建專屬環(huán)境的概念,也提供了每個環(huán)境下獨立的依賴庫版本支持。Anaconda 還有自己的包管理器:conda,你可以用它來安裝依賴庫。
另外,Anaconda 還允許你通過 pip 安裝一些在 Anaconda 包管理器中找不到的 Python 包。
怎么選擇呢?
那么究竟該怎么選擇呢?是 Virtualenv 還是 Anaconda?比如我時常會跨越 Python 2 和 Python 3 測試新的 TensorFlow 版本和一些其他的庫。
理想情況下,我能在這兩者上使用那些新的庫,但是某些情況下,兩者都不能夠滿足需求。
再認識認識 pyenv
所以最終我選擇兩者都用,然后用 pyenv 這個庫來管理所有的東西。從概念上來看,pyenv 處于 Virtualenv 和 Anaconda 的上層,它不僅被用于管理所使用的 Virtualenv 的虛擬環(huán)境和 Anaconda 的開發(fā)環(huán)境,還可以輕松應對 Python 2 和 Python 3 相關的操作。
Pyenv 所有特性中我最鐘意的就是它為給定目錄創(chuàng)建默認開發(fā)環(huán)境這一點。這就使得創(chuàng)建新目錄時所需的開發(fā)環(huán)境實現(xiàn)自動配置。特別是當我每次要創(chuàng)建新項目的時候,這比起以往要記住如何創(chuàng)建復雜環(huán)境來說簡單多了。

所以到底應該用哪一款 Python 包管理工具?這確實由你的日常工作流和喜好來決定。
如果你一般就是用一些核心的數(shù)據(jù)研究工具,并且不在意有一些額外多余的庫安裝到本地,Anaconda 是個不錯的選擇。選擇 Anaconda 能夠給你滿足所有需求偏好的更簡單的工作流。
但是,如果你是一個喜歡定制自己的虛擬工作環(huán)境并且對其中的依賴項有極強控制欲的人,那么諸如 Virtualenv 和 pyenv 的工具就非常適合你。
小結一下
管理 Python 依賴庫,絕對沒有唯一最佳,除了我列舉出來的之外還有許許多多非常不錯的。
各種各樣的工具此起彼伏,記住最重要的就是每個人都有不同的需求、偏好、用法,所以要根據(jù)自身的需求來覺得最適合你的工具是什么。
你的 Python 環(huán)境是什么樣的?你是如何牢牢掌控一切的?在評論中分享你的配置吧!
-
數(shù)據(jù)處理
+關注
關注
0文章
644瀏覽量
29860 -
機器學習
+關注
關注
66文章
8546瀏覽量
136523 -
python
+關注
關注
57文章
4867瀏覽量
89804
原文標題:AIA 系列 | 機器學習工程師們,Python 包管理哪家強?
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
機器學習為什么需要數(shù)據(jù)預處理
數(shù)據(jù)處理
【MiCOKit申請】智能數(shù)據(jù)處理裝置
STN32開發(fā)板應用詳解——基于倉儲環(huán)境監(jiān)控系統(tǒng)
常用大數(shù)據(jù)處理技術歸類
《數(shù)據(jù)處理器:DPU編程入門》+初步熟悉這本書的結構和主要內容
自適應濾波在平臺自標定數(shù)據(jù)處理中的應用
游客游跡RFID數(shù)據(jù)處理與清洗方法研究與實現(xiàn)
基于iOS環(huán)境下的實驗數(shù)據(jù)處理系統(tǒng)的設計與實現(xiàn)
機器學習和數(shù)據(jù)處理的常見算法的簡單介紹及優(yōu)缺點分析
在android開發(fā)上運行機器學習算法作為數(shù)據(jù)處理分析
數(shù)據(jù)處理的基本問題
Air780E模組LuatOS開發(fā)實戰(zhàn) —— 手把手教你搞定數(shù)據(jù)打包解包
樹莓派5 + Hailo AI加速器:工業(yè)級數(shù)值數(shù)據(jù)處理實戰(zhàn),打通SQLite與機器學習全鏈路
分享自己用于搞定數(shù)據(jù)處理和機器學習的開發(fā)環(huán)境
評論