之前的电脑因为年幼无知,被搞得乱七八糟, 什么Python各个版本、Conda、pip2、3都混在一起,每次使用得觉得很难受,这次借机公司发了新电脑,准备好好梳理下思路,把环境安排得清清楚楚明明白白。
先说需求:
- Anaconda: 自己没事儿想看点ML,安装Anaconda玩一下
- pip2: 虽然大部分项目已经python3了,但公司还有项目会需要到pip2,并且希望使用virtual env隔离不同项目的Python环境
Anaconda
Anaconda 是什么
Anaconda 就是一个发行版,包含了conda、Python和超多得科学包及其依赖项。简单地可以理解为一个版本的python附带一堆依赖和版本管理器。
如何安装Anaconda
非常无脑,去官网下载即可,由于mac自带的是python2.7,所以我选择了python3.7的Anaconda(https://www.anaconda.com/download/#macos)。下载之后紧接着就是无脑安装。点点点点之后就安装完成了,可以在Launch中看到Anaconda Navigator了。
让我们再试试python:
MacBook-Pro:~ hal$ python
Python 3.7.1 (default, Dec 14 2018, 13:28:58)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
Python2.7 怎么办
如刚才所示,因为安装Anaconda,Python已经默认是3.7了,那我如何才能使用到python2.7呢。我们可以使用alias,以python2作为python2.7的别名。
别名的指令可以写在以下三个文件中更改:
~/.bash_profile 针对用户级别
./etc/profile 全局公有配置,登陆即会读取
./etc/bashrc 全局公有配置,bash shell的时候会执行
我们选择修改bash_profile,也是最推荐的一种:
# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/Users/wanghao/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
\eval "$__conda_setup"
else
if [ -f "/Users/wanghao/anaconda3/etc/profile.d/conda.sh" ]; then
. "/Users/wanghao/anaconda3/etc/profile.d/conda.sh"
CONDA_CHANGEPS1=false conda activate base
else
\export PATH="/Users/wanghao/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda init <<<
#alias for python
alias python2="/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7"
前面的部分都是因为安装Anaconda自动生成的,我们添加#alias for python的部分(⚠️此处=两边不能加空格,否则会报错)
Python2.7的路径问题
系统Library中的python
/System/Library/Frameworks/Python.framework/Versions/2.7 自带2.7
/usr/bin 中的python
/usr/bin/python2.7
我们其实可以看到/usr/bin中有很多个python,在目前我的本机中他们都指向系统自带的python2.7
MacBook-Pro:bin hal$ ls -al | grep 'python'
-rwxr-xr-x 1 root wheel 66880 11 30 13:55 python
-rwxr-xr-x 4 root wheel 925 8 18 10:49 python-config
lrwxr-xr-x 1 root wheel 75 11 30 19:00 python2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x 1 root wheel 82 11 30 19:00 python2.7-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
-rwxr-xr-x 1 root wheel 66880 11 30 13:55 pythonw
lrwxr-xr-x 1 root wheel 76 11 30 19:00 pythonw2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
以防将来有变化,引起不必要的麻烦,我们选择系统Library中的python2.7作为alias的目录
好像还没有pip2
查看目前pip的版本为python3.7下的pip
MacBook-Pro:bin hal$ pip --version
pip 18.1 from /Users/wanghao/anaconda3/lib/python3.7/site-packages/pip (python 3.7)
mac本身不自带pip,原定是需要easy_install安装的,为了保险起见,确保能装到python2.7中
我放弃了使用easy_install(当然我猜一定有方法可以用easy_install),而选择直接下载安装
$ cd ~/Downloads/ # curl 会默认download到当前目录所以,先选择下载文件夹
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本
$ sudo /usr/bin/python2.7 get-pip.py # 运行安装脚本。此时因为是sudo,不能用刚才配的python2
检查以下就可以看到pip2已经安装完成
MacBook-Pro:~ hal$ ls -al /usr/local/bin/ | grep 'pip'
-rwxr-xr-x 1 root wheel 299 1 3 17:37 pip
-rwxr-xr-x 1 root wheel 299 1 3 17:37 pip2
-rwxr-xr-x 1 root wheel 299 1 3 17:37 pip2.7