多人共同協作一個project的時候非常需要各人的開發環境統一,才不會發生「我run不了你的code」這些情況。
「python的pip」不像「node js的npm」那樣有node_modules
、package.json
這些規範,所以統一開發環境需要比較low level地做,一般都是使用virtualenv
這個pip package。
1. 基本步驟
# 安裝virtualenv
$ pip install virtualenv
# 在project_folder裡面建立一個叫env的虛擬環境
$ cd project_folder
$ virtualenv env
# 現在應該會有個env/的folder
# 進入env/這個虛擬環境
$ source env/bin/activate
# activate是一個自帶的shell script,用作activate這個environment
# 現在你的terminal prompt會多了些前綴,提示你正在使用env/作為python environment
(env) $
# 離開env
$ deactivate
2. 用途
確保project的python environment在不同電腦的統一
# 在env裡面安裝新package (例如Flask)
(env) $ pip install Flask
# 查看已安裝packages
(env) $ pip freeze
Flask==0.12.2
# 保存現在的environment裡所有packages的version到requirement.txt
(env) $ pip freeze > requirement.txt
# 看看requirement.txt
(env) $ cat requirement.txt
Flask==0.12.2
# -------------
# 在另一部電腦重建一模一樣的environment
$ git pull
$ virtualenv env # 建立env
$ source env/bin/activate
(env) $ pip freeze
# 沒有package
(env) $ pip install -r requirement.txt # 裝回packages
$ pip freeze
Flask==0.12.2
緊記.gitignore
應ignoreenv/
,只需保留requirement.txt在repo中,各用家應自己建立env
3. 注意事項
虛擬環境的Python bin在env/ folder裡面,而不再是平日default用的python
# 找出正在使用哪個python
$ which python
/Users/USERNAME/.../bin/python
$ which python
/Users/USERNAME/.../project_folder/env/bin/python
使用Python 3的虛擬環境
# 確保已安裝python3
$ python3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
# 建立使用python3的environment
virtualenv -p python3 env3