iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
0

Python

在資料科學的領域中, R 與 Python 是單機上分析最常被提及到的兩個語言,原因不外乎是好上手、擁有豐富的函式庫、社群完整等等的因素,所以接下來這幾天會介紹幾個在資料科學中有機會使用到的程式語言,作為修煉成為資料科學家的基礎功!

Python 是一種物件導向、直譯式的電腦程式語言。在資料科學中, Python 有支援許多好用的函式庫,像是 NumPy、Pandas、SciPy 等等。Python 的學習曲線相對平緩,因此在學習成本上是比較容易上手的。

關於 Python ,我會分成兩天來寫:

  • Python 程式語言初探 - 環境篇:介紹如何在開發環境中,設置一套乾淨舒適的開發環境。
  • Python 程式語言初探 - 基礎篇:會簡單帶過常見的資料及語法,並且介紹。

這次鐵人賽有看到蠻多組也是在講 Python 程式設計的,我覺得都寫的很好,如果想深入研究的話推薦給大家!

環境

一般來說, linux based 的電腦中會安裝好系統自帶的 Python。不過這可能會有幾個問題出現:

  • 如果你的專案使用想使用與系統不同版本的話怎麼辦?
  • 如果你有多個專案,每個專案都有各自需要的版本及特定的套件?
  • 擔心隨便升級或修改系統自帶的 Python,會遇到一些權限上的問題?

所以,身為一個開發者來說,我們會想要讓我們的環境上可以支援不同的 Python 版本,每個專案也有用有自己的套件環境。專案環境彼此獨立,開發也不容易出現互相干擾衝突的情況。網路上有許多解決方案,以下是列出我自己比較習慣的一種環境配置的方式。我是利用 Pyenv 搭配 Virtaulenvwrapper

pip

 
pip 是一款 Python 的套件管理工具(就像 JavaScript 有 npm , Ruby 有 gem , PHP 有 Composer 一樣)。可以使用它來安裝需要的套件,而不用每一個套件都各自下載,放在專案資料夾底下。一般的安裝 python 的時候都會帶上 pip ,除非是系統自帶的才需要另外安裝。

常見指令

$ pip -V # 查看 pip 的版本,及對應的 python 版本
$ pip install -U pip ## 更新 pip

$ pip list # 列出所有安裝哪些套件
$ pip search package # 搜尋相關套件
$ pip install package # 安裝套件
$ pip uninstall package # 移除套件
$ pip install --upgrade package # 升級套件

 

Virtualenv & Virtaulenvwrapper

Virtualenv 是 Python 的一種虛擬環境的套件,我們可以用它來創建獨立的python 環境。這樣的話,就可以同時建立多個虛擬環境,每個環境裡面的python 使用不同的版本,並且環境之間相互獨立。 Virtaulenvwrapper 是基於 Virtualenv 的操作工具,提供更方便操作。

# 安装
pip install virtualenv
pip install virtualenvwrapper

## 環境配置
$ mkdir $HOME/.virtualenvs # 建立放置虛擬環境的目錄
$ export WORKON_HOME=$HOME/.virtualenvs
$ source /usr/local/bin/virtualenvwrapper.sh
# 可以把上面這兩句加到 ~/.zshrc 或是 ~/.bash_profile 中,不然就要每次都設置一次

## 使用
$ mkvirtualenv envName # 建立一個跟目前環境相同的 Python
$ mkvirtualenv --no-site-packages envName # 建立一個跟沒有任何套件的 Python 環境
$ lsvirtualenv 或 workon # 查看目前有的虛擬環境
$ workon envName # 切換到某個虛擬環境
$ deactivate # 退出某個虛擬環境
$ rmvirtualenv envName # 退出某個虛擬環境

Pyenv

Pyenv 是 Python 的版本管理工具,可以在同一台電腦上安裝不同版本,並可以任意切換。

## 安裝
$ brew install pyenv # pyenv 並不是 python 的套件,所以要透過的是 OS 來安裝而不是 pip。

## 環境配置
$ if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
$ export PYENV_ROOT=/usr/local/var/pyenv
# 可以把上面這兩句加到 ~/.zshrc 或是 ~/.bash_profile 中,不然就要每次都設置一次

## 使用
$ pyenv versions # 查看目前所有安裝的版本, system 是系統原本就安裝的,如果使用 brew 安裝的也會被放在 system 
$ pyenv install 3.5.2 # 安裝 3.5.2 版本的 python
$ pyenv rehash # 重新載入
$ pyenv local 3.5.2 # 告訴系統現在的資料夾下要使用這個版本
$ pyenv local 3.5.2 --unset # 告訴系統現在的資料夾下不要使用這個版本

Pyenv 結合 Virtaulenvwrapper

有了 Pyenv 跟 Virtaulenvwrapper,我們就可以根據不同的專案需求針對不同的 Python 建立自己的虛擬環境。大致流程是這樣:先利用 Pyenv 安裝/切換到特定版本 -> 安裝 Virtaulenvwrapper -> 開啟虛擬環境 -> done!

## 安裝/切換到特定版本
$ pyenv install 2.7.10
$ pyenv rehash
$ pyenv local 2.7.10
 

## 安裝 Virtaulenvwrapper
$ pip install virtualenv
$ pip install virtualenvwrapper

## 開啟虛擬環境
$ mkvirtualenv py2dev
 
## 退出回到系統環境 
$ deactivate
$ pyenv local --unset 2.7.10

重複一次,就可以建立不用版本的虛擬環境了。

Reference

  1. 深入对比数据科学工具箱:Python和R之争
  2. 如何使用 Python 學習機器學習(Machine Learning)
  3. 数据科学界华山论剑:R与Python巅峰对决
  4. Django筆記 - Python的模組與套件
  5. Mac多Python版本共存,多个独立Python开发环境切换。

上一篇
資料科學的思考流程
下一篇
Python 程式語言初探 - 操作篇
系列文
從學生到職場:菜鳥資料科學家的第一個月30

尚未有邦友留言

立即登入留言