當我們不再重復“造輪子”時,會使用大量前人打造的工具,為了管理好這些工具的引用和依賴關系,我們必須有良好的意識和趁手的工具。今天這一講,就是在一切變得復雜之前,讓你找到新的方法來節省時間和精力。
開發者們對自己的開發環境總是有著各種各樣的偏好。Vim 還是 Emacs?使用 tab 還是空格縮進?Virtualenv 和 Anaconda 哪個更好?紛爭不斷,爭論不休。今天我們會與大家分享自己用于搞定數據處理和機器學習的開發環境。
你不必照著我的配置來弄,但也許其中的一些可以啟發你搞定專屬的開發環境。
Pip
首先要講講 Pip。Pip 是 Python 的包管理工具。Python 內置 pip 已經有一些日子了,所以如果你裝了 Python,通常都會自帶 pip。
Pip 被用來安裝各種包,比如 tensorflow、numpy、pandas 和 jupyter,同時還會將它們的依賴一同安裝好。
pipinstall
許許多多的 Python 資源都通過 pip 包的形式來傳輸。有時你會在某個包含 Python 腳本的目錄下看到一個 requirement.txt 文件。通常,那個文件描述了當前項目所需的所有 pip 包,通過下面的命令即可將它們都安裝到當前目錄。
pipinstall-rrequirements.txt.
作為整個 pip 包生態的一份子,各種各樣的版本號、依賴信息充斥其中。有時我會針對不同項目使用不同版本的庫(pip 包),所以我需要有一種能夠針對獨立環境配置一組包依賴關系的方式。
同時在一臺機器上搞 Web 開發和數據科學相關研究會讓你電腦上的 Python 包版本系統混亂不堪
目前有兩種非常受歡迎的方式用于管理不同的 pip 包:virtualenv 和 anaconda。
Virtualenv
Virtualenv 支持你創建可命名的“虛擬開發環境”,在其中你就能按照單獨的習慣安裝 pip 包了。
如果你想要針對每個環境獨立控制對各類 pip 包的管理,那么這就是一款絕佳的工具比如,你可以為 Web 開發創建獨立的環境,定義所需的依賴庫,然后為數據相關的開發研究建立截然不同的環境。
這樣一來,你再也不用顧慮各種毫無關系的依賴包在開發環境中存在,也可以創建具有專門用途的開發環境。
Anaconda
如今,如果你主要從事數據相關的工作,那么 Anaconda 將會是一個不錯的選擇。Anaconda 由 Continuum Analytics 打造,并且是一個集成了許許多多數據相關 Python 庫的發行版。
Anaconda 的流行應當歸功于它只需一次安裝就能得到數據科學、機器學習相關的大量工具,所以它勝在快速和簡單的安裝配置過程上。
與 Virtualenv 一樣,Anaconda 也引入了創建專屬環境的概念,也提供了每個環境下獨立的依賴庫版本支持。Anaconda 還有自己的包管理器:conda,你可以用它來安裝依賴庫。
另外,Anaconda 還允許你通過 pip 安裝一些在 Anaconda 包管理器中找不到的 Python 包。
怎么選擇呢?
那么究竟該怎么選擇呢?是 Virtualenv 還是 Anaconda?比如我時常會跨越 Python 2 和 Python 3 測試新的 TensorFlow 版本和一些其他的庫。
理想情況下,我能在這兩者上使用那些新的庫,但是某些情況下,兩者都不能夠滿足需求。
再認識認識 pyenv
所以最終我選擇兩者都用,然后用 pyenv 這個庫來管理所有的東西。從概念上來看,pyenv 處于 Virtualenv 和 Anaconda 的上層,它不僅被用于管理所使用的 Virtualenv 的虛擬環境和 Anaconda 的開發環境,還可以輕松應對 Python 2 和 Python 3 相關的操作。
Pyenv 所有特性中我最鐘意的就是它為給定目錄創建默認開發環境這一點。這就使得創建新目錄時所需的開發環境實現自動配置。特別是當我每次要創建新項目的時候,這比起以往要記住如何創建復雜環境來說簡單多了。
所以到底應該用哪一款 Python 包管理工具?這確實由你的日常工作流和喜好來決定。
如果你一般就是用一些核心的數據研究工具,并且不在意有一些額外多余的庫安裝到本地,Anaconda 是個不錯的選擇。選擇 Anaconda 能夠給你滿足所有需求偏好的更簡單的工作流。
但是,如果你是一個喜歡定制自己的虛擬工作環境并且對其中的依賴項有極強控制欲的人,那么諸如 Virtualenv 和 pyenv 的工具就非常適合你。
小結一下
管理 Python 依賴庫,絕對沒有唯一最佳,除了我列舉出來的之外還有許許多多非常不錯的。
各種各樣的工具此起彼伏,記住最重要的就是每個人都有不同的需求、偏好、用法,所以要根據自身的需求來覺得最適合你的工具是什么。
你的 Python 環境是什么樣的?你是如何牢牢掌控一切的?在評論中分享你的配置吧!
-
數據處理
+關注
關注
0文章
595瀏覽量
28554 -
機器學習
+關注
關注
66文章
8408瀏覽量
132567 -
python
+關注
關注
56文章
4792瀏覽量
84630
原文標題:AIA 系列 | 機器學習工程師們,Python 包管理哪家強?
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論