Python 板


LINE

先前有朋友提到怎麼樣在 mac 設定 Python 科學計算環境, 雖然有 anaconda 或用官方 dmg 安裝的方式,這邊提供的是 透過 Homebrew + pyenv 來做多個獨立 Python 版本的控制。 ============================== = 給不想看說明文的快速安裝法 = ============================== 在全新安裝的 Mac OSX 10.9 Mavericks 上測試,使用 BASH。 安裝 Python 3.4.0 與 Numpy 1.8 # 安裝 Xcode command line tool,已安裝可跳 xcode-select --install # 安裝 Homebrew,已安裝可跳 ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" brew doctor # 測試 homebrew 是否有問題 brew install `brew deps python3` # 安裝 Python 相依套件 vim ~/.bash_profile # 新增 pyenv 環境。新增以下內容 # For pyenv export PYENV_ROOT=/usr/local/opt/pyenv export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv > /dev/null; then eval "$(pyenv init -)"; fi source ~/.bash_profile # 使用上面定義好的設定檔 brew install pyenv # 安裝 pyenv pyenv install 3.4.0 # 安裝 Python 3.4.0 setuptools 3.1 pip 1.5 brew tap Homebrew/python brew tap homebrew/science pyenv local 3.4.0 # 僅在本目錄下以 3.4 作為預設版本 pip3 install nose # Numpy 測試用 brew install `brew deps numpy` # Numpy 相依套件 pip3 install numpy python3 -c "import numpy; numpy.test()" # 測試 numpy 安裝 ======== = 說明 = ======== 細節可以參考 https://github.com/yyuu/pyenv 的說明。 他同樣可以搭配 pyenv-virtualenv 使用。 如果之前有使用過 brew install python3 之類的方式安裝的話, 對 pyenv 來說,這是 system 的設定,所以想要停用 pyenv 的版本話 pyenv [global|shell|local] system 就會換回去了,global/shell/local 差別在這個更動適用到全系統還是這個環境等。 我自己的測試情況是不會有衝突。 不過需要特別注意的是,brew install numpy 這會安裝給 brewed 版本的 python 即便使用了 pyenv global 3.4.0 行為仍舊一樣。 brew deps xxx 會把 xxx 相依的套件列出,我自己是偏好用 brew 管理套件, 雖然說,不裝 pyenv 似乎也會去下載需要的 source,但我並沒有測試這部份。 如果照上面方式設定的話,並不會跑到預設的 ~/.pyenv 底下, 而是到 homebrew 常用的 /usr/local/opt/pyenv 底下, 不喜歡可以這個路徑改掉。 pyenv 會對經常要切換測試不同 python 版本的人來說,更為方便 搭配 virtualenv 就可以隔離出不同的套件群。 如果是使用 fish SHELL 的話,預設設定檔路徑在 ~/.config/fish/config.fish 設定檔要加入 # Update PATH for homebrew set -x PATH /usr/local/bin $PATH # For pyenv set -x PYENV_ROOT /usr/local/opt/pyenv set -x PATH $PYENV_ROOT"/bin" $PATH if begin; status --is-interactive; and type -f pyenv > /dev/null; end . (pyenv init -|psub) end 記得把 brew install `brew deps numpy` 改成合法的語法 brew install (brew deps numpy) ==================== = Link brewed libs = ==================== OS X 提供的 OpenSSL, SQLite3 版本都蠻舊的,也許你會想連接新的版本, 而且預設是用 gcc 來編譯,跟 brewed python 用 clang 不同。 如果想要仿造 homebrew 設定的話,在 pyenv install 前加上 brew install sqlite brew install openssl export CONFIGURE_OPTS="CC=clang" export CFLAGS="-I/usr/local/opt/openssl/include" export CFLAGES="$CFLAGS -I/usr/local/opt/sqlite/include" export LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/opt/sqlite/lib" pyenv install 3.4.0 # 已知 2.x 版會失敗 失敗的話,可以強制 link 到 /usr/local 並且把 FLAGS 設定修改成 brew link --force sqlite openssl export CFLAGS="-I/usr/local/include" export LDFLAGS="-L/usr/local/lib" 可以用以下的命令來測試連結的 lib 是不是要的版本 `pyenv prefix 3.4.0`/bin/python -c \ "import ssl; print(ssl.OPENSSL_VERSION)" # OpenSSL `pyenv prefix 3.4.0`/bin/python -c \ "import sqlite3 as s; print(s.sqlite_version_info)" # SQLite3 ========= = Numpy = ========= 有人可能會連結到 Intel MKL,最常的問題是不知道連到哪個 BLAS lib python -c "import numpy as np; np.__config__.show()" ============== = virtualenv = ============== 由於 Python 套件常常有相依的狀況,為不同專案就可以使用 virtualenv 來獨立出一個環境,每個 virtualenv 互相獨立不干擾。十分方便。 pyenv 的作者貼心寫了 pyenv-virtualenv 以及 pyenv-virtualenvwrapper 這看官網的說明就會使用了。 這邊主要是補充比較 tricky 的部份。我自己是用 fish shell + virtualfish, 建立一個新的環境,使用特定版本的 Python 指令如下: vf tmp -p (pyenv prefix 3.4.0)/bin/python3 pip install ....... vf deactivate 我初次使用竟然不成功,後來發現是 virtualenv 版本太舊的關系 請升級至 1.11+ 就沒有問題。討論可見 https://github.com/pypa/virtualenv/issues/463 與 3.4 有關 歡迎大家指教~ -- ============================================ = PyCon APAC 2014, May 15-18 @中研院人社館 = ============================================ 如果對 Python 在科學計算上有什麼有趣的進展/研究/套件, 都很歡迎各位參加 PyCon APAC 2014! 大家有興趣可以參考官網 http://tw.pycon.org/2014apac/zh/ 也歡迎來 PyConTW FB 粉絲頁按個讚! https://www.facebook.com/pycontw 如果你也想為 Python 社群盡一份力量,我們也在徵求志工朋友!歡迎站內信! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.129.5
1F:推 Equalmusic:非常詳盡的說明,太感謝了! 02/03 14:06
EDIT: 增加 fish 的設定,以及 virtualenv 相關介紹
2F:推 keitheis:朝聖推 02/11 22:24
EDIT: fix typo, which pyenv --> command -v pyenv (thanks concise!) EDIT: fix pyenv not found detection in fish EDIT: use brewed openssl and sqlite3 in pyenv, add get numpy info EDIT: 3.4.0 released! ※ 編輯: ccwang002 來自: 140.112.25.107 (03/17 16:35)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP