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灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP