Mac 系统 10.14.2
mac自带python2.7, 通过which python
可以查看到改命令的执行程序在"usr/bin/python",
python3问世也有些年头了,从官网下载安装, which python3
显示安装在"/Library/Frameworks/Python.framework/Versions/3.7/bin/python3",这个目录被添加到PATH环境变量中了,所以我们可以使用python3来执行python3编写的python脚本。
如何做呢
1. 安装好python2(系统自带) 和python3
2 制作虚拟环境(利用virtualenv)
$ sudo mkdir /usr/local/custom/bin/python/python2
$ cd /usr/local/custom/bin/python/python2
$ sudo pip2 install virtualenv
$ virtualenv venv_py2
$ . venv_py2/bin/activate #启动虚拟环境
$ sudo mkdir /usr/local/custom/bin/python/python3
$ cd /usr/local/custom/bin/python/python3
$ sudo pip3 install virtualenv
$ virtualenv venv_py3
$ . venv_py3/bin/activate #启动虚拟环境
deactivate #退出虚拟环境
3 禁止在虚拟环境外使用pip
在 ~/.bash_profile中添加export PIP_REQUIRE_VIRTUALENV=true
执行$ source ~/.bash_profile
直接使用pip会提示
Could not find an activated virtualenv (required)
这样虚拟环境之外就无法使用pip了。
4 简化命令
编写我们自己的bash脚本
sudo mkdir /usr/local/custom/bin
sudo touch /usr/local/custom/bin/pythonEnv.sh
编辑该pythonEvn.sh,内容如下:
#pythonEvn.sh
#!/bin/bash
env=$1
if [ $env == "python2" ]; then
source /usr/local/custom/bin/python/python2/venv_py2/bin/activate;
python --version;
elif [ $env == "python3" ]; then
source /usr/local/custom/bin/python/python3/venv_py3/bin/activate;
python --version;
elif [ $env == "deactivate" ]; then
echo "just execute deactivate directly";
else
echo "Please chooose python2 or python3";
fi
在/etc/paths
文件后追加/usr/local/custom/bin
,将该文件所在目录加入到PATH环境变量。
这样在terminal执行source pythonEnv.sh pthyon2
或source pythonEnv.sh python3
就能切换python2和python3的环境了。
到这里还是觉得命令有点繁琐,那么用上alias,给source pythonEnv pthyon2
和source pythonEnv python3
一个别名吧。
别名
在 /etc/bashrc
文件后面追加
alias py2='source pythonEnv.sh python2'
alias py3='source pythonEnv.sh python3'
然后在terminal执行source /etc/bashrc
。
结束
OK,现在只要在终端输入py2
或py3
就能切换python2 或者python3环境了。
参考:
[1]. Mac完美搭建python2,python3共存的环境