MAC INSTALL PYTHON AND PACKAGE MANAGER
? Mac 系統(tǒng)10.x 之后會(huì)自帶Python欲虚,它適合用于學(xué)習(xí),不適合用來開發(fā),因?yàn)橐坏┫到y(tǒng)升級(jí)就有可能Python版本就會(huì)發(fā)生改變俯在;Python是和系統(tǒng)綁定的,Homebrew是包管理器娃惯,可以永遠(yuǎn)獲取最新版本的Python和pip以及Setuptools;改變OS X的Python版本有可能會(huì)觸發(fā)系統(tǒng)隱藏的bug肥败。
? brew -> xcode -> python/python3 -> virtualenv
? brew install python
? brew install python3
? pip install virtualenv
? mkdir -p ~/Projects ~/Virtualenv
‘將pip限制在虛擬環(huán)境中趾浅,這樣virtualenv默認(rèn)使用pip管理包,且只能使用在激活環(huán)境中使用馒稍,而不會(huì)影響系統(tǒng)python的環(huán)境’
? vim ~/.bash_profile
? Add new one line:export PIP_REQUIRE_VIRTUALENV=true
? source ~/.bash_profile
? cd ~/Virtualenvs
‘創(chuàng)建兩個(gè)版本的項(xiàng)目皿哨,分別使用的時(shí)python2和python3’
? virtualenv foobar
? virtualenv -p python3 foobar-py3
'升級(jí)全局到包'
? vim ~/.bashrc
Add one new line: gpip(){ PIP_REQUIRE_VIRTUALENV="" pip "$@" }
? gpip install --upgrade pip setuptools wheel virtualenv
? 應(yīng)該安裝類似于Setuptools之類用來安裝第三方的Python類庫。
安裝Python需要GCC的支持纽谒,GCC用XCode下載证膨。
Mac OSX 缺一個(gè)包管理器,Homebrew能彌補(bǔ)這個(gè)空白鼓黔。
安裝 Homebrew 可以去 官網(wǎng) 首頁獲取安裝命令央勒,一行即可完成。 brew install python
Homebrew 會(huì)替你安裝 Setuptools 和 pip 澳化,Setuptools 可以用 easy_install 替你下載和安裝網(wǎng)絡(luò)上的相應(yīng)的Python包崔步,也可以很簡單的通過網(wǎng)絡(luò)安裝兼容Python版本的包。pip 是更容易安裝和管理Python包的工具缎谷,相比于 easy_install ,更推薦這個(gè)pip井濒。 在某些方面它比 easy_install 更好,且積極維護(hù)著列林。
虛擬環(huán)境是通過創(chuàng)建虛擬的Python環(huán)境瑞你,讓在不同位置的不同項(xiàng)目保持獨(dú)立性的工具。
?
? virtualenv 是能創(chuàng)建分離的Python環(huán)境的工具希痴。virtualenv創(chuàng)建一個(gè)文件夾來包含Python項(xiàng)目執(zhí)行所需要的包者甲,安裝 pip install virtualenv
virtual 基本用法
? 1. 為項(xiàng)目創(chuàng)建虛擬的環(huán)境
? cd my_project_folder
? virtualenv venv
OR virtualenv -p /usr/bin/python2.7 venv
? 'virtualenv venv' 將在當(dāng)前目錄創(chuàng)建包含Python可執(zhí)行文件的文件夾,和一份pip類庫的復(fù)制润梯,這樣可以用pip來安裝其它的包过牙。virtualenv的環(huán)境名可以是任意的,這里是env纺铭;不指定名字將會(huì)把文件放在當(dāng)前所在的目錄,用 -p 可以指定python 環(huán)境寇钉。
? 使用 --no-site-packages
該參數(shù),系統(tǒng)全局安裝的包將不會(huì)被帶入到新建的環(huán)境中舶赔,該參數(shù)走virtualenv 1.7版本之后是勾選的扫倡。
? 2.激活該環(huán)境
? source venv/bin/activate
? 激活環(huán)境成功的話,bash提示符就會(huì)發(fā)生改變,那么現(xiàn)在用pip安裝的包都將在這個(gè)env環(huán)境中撵溃。
? pip install requests
? 3.關(guān)閉環(huán)境
? deactivate
? 這將會(huì)將你帶回到系統(tǒng)默認(rèn)的Python解釋器疚鲤。
那么刪除虛擬環(huán)境,只要?jiǎng)h除它的文件夾就好缘挑。
Mac OS中主要有三種包管理工具:MacPorts集歇,Homebrew,F(xiàn)ink语淘。
1. MacPorts:因?yàn)?Mac OS 源自 BSD诲宇,因此將 BSD 中的 Port 移植到 OS 成為 MacPorts 就一點(diǎn)不奇怪。MacPorts 會(huì)獨(dú)立于 OS 自建一套倉庫樹惶翻,OS 的包執(zhí)行目錄為 /usr/local姑蓝,而 MacPorts 的包執(zhí)行目錄為 /opt/local。MacPorts 盡量不影響系統(tǒng)現(xiàn)有程序吕粗,自然也就盡量少復(fù)用系統(tǒng)已有程序纺荧。MacPorts 安裝包的過程是下載該程序的所有源文件及其依賴包,然后在本地進(jìn)行 Build 生成最終的可執(zhí)行文件颅筋。這樣做的好處是在系統(tǒng)中存在一套獨(dú)立的生態(tài)環(huán)境宙暇,從而不影響系統(tǒng)自身的生態(tài)環(huán)境,缺點(diǎn)就是浪費(fèi)了系統(tǒng)自身的生態(tài)資源议泵。
2. Homebrew:在 Lion 之后興起的包管理工具客给,工作方式與 MacPorts 類似,下載源代碼然后本地 Build肢簿。不同之處在于 Homebrew 采取與 MacPorts 截然相反的態(tài)度靶剑,對(duì)系統(tǒng)資源是最大程度的利用,因此可以說 Homebrew 是直接對(duì)現(xiàn)有系統(tǒng)生態(tài)環(huán)境進(jìn)行修改池充,所有包也是直接安裝到現(xiàn)有的生態(tài)環(huán)境中桩引,這樣做的好處是節(jié)約了系統(tǒng)資源,但缺點(diǎn)是每一次操作都是直接對(duì)系統(tǒng)進(jìn)行修改收夸,嚴(yán)重依賴和影響現(xiàn)有系統(tǒng)坑匠。
3. Fink:基于 Debian 的 packaging tools,它下載的都是已編譯后的二進(jìn)制可執(zhí)行文件(或源碼)卧惜,因此無需本地編譯厘灼,即下即用。缺點(diǎn)是所有包都需要 Fink 預(yù)先編譯咽瓷,導(dǎo)致更新速度跟不上设凹。
python version manager ??? virtualenv pyenv vagrant Anaconda pip Anaconda
Pythonbrew: Not maintain anymor.
Pyenv:
?```
brew update
brew install pyenv
pyenv --help
pyenv commands
brew install pyenv-virtualenv
pyenv install --list
pyenv install x.x.x #install python with version number
pyenv versions #list current python version
pyenv global system #checkout the python to system version
pyenv virtualenv x.x.x myvenv #create python version with named "myenv"
pyenv virtualenvs #show python virtualenv
pyenv shell myvenv #active python virtualenv
Virtualenv 是一個(gè)虛擬環(huán)境程序,可以把開發(fā)環(huán)境隔離茅姜∩林欤基本思想是建立不同的環(huán)境目錄,其中裝有獨(dú)立的各類包,甚至也可以是獨(dú)立的不同版本python程序奋姿。
ref: