好久没写博客了,因为一直不干正事。最近受老婆胁迫帮她做事,顺便自己也学习学习,值得记录一下,备忘。

pyenv,一个模仿rbenv而产生的工具,可以方便的管理各种python版本。命令基本和rbenv差不多。用pyenv和它的virtualenv插件,来替代virtualenv是个不错的选择。

安装pyenv时报错,报错记录已经遗失,好象是系统缺少一些库文件之类的,运行xcode-select --install解决。

pyenv的配置方法文档上都有,没什么好说的,完成之后装pandasmatplotlib也很顺利,然后打开我的新宠ipython notebook输入

1
import matplotlib.pyplot as plt

咦,报错了

1
2
3
UserWarning: Python is not installed as a framework. The MacOSX backend may not
work correctly if Python is not installed as a framework. Please see the
Python documentation for more information on installing Python as a framework on Mac OS X

原来pyenv安装的python并不是作为Mac OS X的framework安装的。matplotlib文档上给出了解决方案,虽然这个方案是针对virtualenv的,不过pyenv应该也差不多,于是选择了看起来比较顺眼的在zshrc中添加函数的方法,修改函数如下

1
2
3
4
5
6
7
function frameworkpython {
if [[ ! -z "$PYENV_VIRTUAL_ENV" ]]; then
PYTHONHOME=$PYENV_VIRTUAL_ENV `which python` "[email protected]"
else
/usr/local/bin/python "[email protected]"
fi
}

其实也就是把环境变量VIRTUAL_ENV换成了PYENV_VIRTUAL_ENV而已。然而不知道什么原因,并没有生效(当然运行exec $SHELL我是没有忘记的)

只好继续google,发现pyenv可以把python作为framework来安装:

1
env PYTHON_CONFIGURE_OPTS="--enable-framework CC=clang" pyenv install 3.5.2

用这个命令重装python之后,一切都OK了。