一、Mac下,可能存在的 python 环境:
1、Mac系统自带的python环境在(由于不同的 mac 系统,默认自带的 python 版本可能不一样):
Python 2.7.10: /System/Library/Frameworks/Python.framework/Versions/2.7
其中,解释器在该目录下的 ./bin/python2.7
Python 2.6.9: /System/Library/Frameworks/Python.framework/Versions/2.6
其中,解释器在该目录下的 ./bin/python2.6
2、用户安装的python环境默认环境在:
Python 3.4.2: /Library/Frameworks/Python.framework/Versions/3.4
其中,解释器在该目录下的 ./bin/python3.4
Python 2.7.7: /Library/Frameworks/Python.framework/Versions/2.7
其中,解释器在该目录下的 ./bin/python2.7
注意:一般用户再装一遍python环境的时候,在终端的输入python命令,默认启动的python命令是当前用户安装的python版本环境
(即:系统默认的py启动路径,由原来的mac系统默认的解释器变为当前用户安装的py解释器 —— 参考本文最下面的可执行命令的寻找顺序问题)
3、 用户安装Anaconda3后,自带的python环境在:
Python 3.4.1: /Users/steven/Anaconda3
其中,解释器在该目录下的 ./bin/python3.4
(Anaconda3这个文件夹名,是在anaconda在安装时候的需要自定义的)
4、用户安装Anaconda后,自带的python环境在:
Python 2.7.8: /Users/steven/anaconda
其中,解释器在该目录下的 ./bin/python2.7

对于以上各环境,要想知道当前环境下的包路径,可通过一下命令查询:
import sys
print('\n'.join(sys.path))
该方法在排查包的引用问题的时候,特别有用!

二、关于以上的不同 python 环境的启动命令存储路径,以及启动(查找)顺序:
以上介绍了不同python环境所存放的目录,那在使用过程中,到底启动的是哪个环境呢?
首先:
1、Mac系统自带的python环境默认启动路径在:/usr/bin
2、用户安装的python环境默认启动路径在:/usr/local/bin
3、第三方的 python 环境,比如 anaconda 中的 python 环境,默认启动配置在文件中,通常为:~/.bash_profile
(.bash_profile 是在bash(默认的 shell 环境下)的配置文件,像我的电脑现在是 zsh 的 shell 环境,配置文件为.zshrc)
重点来了:
输入 python 命令是:会按照321的顺序查找含有 python 可执行文件,并执行。
该顺序同样适用于,mac 下所有的可执行命令的查找顺序!!!

三、怎么把自己安装的 python 版本设置为默认启动版本:
通过二,我们知道 python 在多版本的环境下的查找顺序:Mac在启动后,会先加载系统配置文件(包括~/.bash_profile )中的路径;并且,在同一配置文件中,可执行命令的路径是从后向前查找,后面路径覆盖前面路径。例如,在终端输入“python”,系统会在配置文件中的路径中从后向前查找,一直到找到为止。
例如:我当前.bash_profile的内容为:
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

# Setting PATH for Python 3.4
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}"
export PATH

# added by Steven Liu
export PATH="/Users/steven/Anaconda3/bin:$PATH"

# added by Anaconda 2.1.0 installer
export PATH="/Users/steven/anaconda/bin:$PATH"

# added by Anaconda3 2.1.0 installer
export PATH="/Users/steven/Anaconda3/bin:$PATH"

# Setting PATH for Subversion 1.9.0
export PATH="/opt/subversion/bin:$PATH"
根据该脚本,先会去找 /opt/subversion/bin 中,有没有命名为“python”的可执行文件(或是快捷方式),发现没有,则往上找,接着找 /Users/steven/Anaconda3/bin ,发现有,就为当前路径下的解释器环境,并执行。
—— 所以,想设置python的版本,直接把你想添加的路径export上去,并放在后面。实测有效!
但是有个细节需要特别注意:
在添加了所需的路径在配置文件的最后之后,如果要想立即看到效果,需要两个步骤:
1.执行 soure .bash_profile;
2.新建 command 窗口查看效果(之前已经打开的窗口是看不到效果的)

四、关于多个 python 环境的卸载问题:
有时候安装的python版本太多,尤其 python 又分2和3,难免安装的东西会乱窜,为避免这种情况,可以试着删除自己安装的某些环境。
删除环境分几步:
1、删除Python框架
sudo rm -rf /Library/Frameworks/Python.framework/
如果有多个版本,而只需要删除一个版本,则:sudo rm -rf /Library/Frameworks/Python.framework/Versions/x.x
2、删除Python程序
sudo rm -rf “/Applications/Python x.x”
3、删除/usr/local/bin目录下的Python连接
brew prune
该命令的输出通常形为:Pruned 48 symbolic links and 18 directories from /usr/local
4、可选步骤:通过brew(Homebrew,是Mac OSX上的软件包管理工具)重新链接新的 python 环境:
brew doctor ——> 通过该命令诊断系统中当前的环境配置情况
sudo brew link python3 ——> 链接到新的 python3环境
其他可参考:http://stackoverflow.com/questions/22774529/what-is-the-safest-way-to-removing-python-framework-files-that-are-located-in-di

五、在执行可执行命令时,有一个小问题需要特别注意:当该命令在多个目录下存在时,到底调用的是什么路径下的命令?
以 python 命令为例:
如果输入带有“./”,则进入的当前目录的python环境
StevenLiu-MacBookPro:bin steven$ pwd
/Users/steven/Anaconda3/bin # 显示当前目录在python3的环境变量下
StevenLiu-MacBookPro:bin steven$ ./python # 根据当前路径找解释器
Python 3.4.1 |Anaconda 2.1.0 (x86_64)| (default, Sep 10 2014, 17:24:09)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
如果输入不带有“./”,则进入的是系统当前默认的python环境
StevenLiu-MacBookPro:bin steven$ python
Python 2.7.8 |Anaconda 2.1.0 (x86_64)| (default, Aug 21 2014, 15:21:46)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
# 这里由于设置了anaconda中的python解释器为默认的python,所以不是
/Library/Frameworks/Python.framework/Versions/2.7

Mac 下 python 环境问题的更多相关文章

  1. Mac下python初学之Image库(PIL)

    Mac下python 使用Image库 安装PIL,下载http://www.pythonware.com/products/pil/ 解压PIL源码包,阅读README知道需要使用python se ...

  2. mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法

    1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller  ...

  3. mac下python实现vmstat

    mac下没有linux/unix 的vmstat,只有vm_stat; sh-3.2# vm_statMach Virtual Memory Statistics: (page size of 409 ...

  4. Mac下Python和Pycharm之virtualenv

    一.python如何配置virtualenv   1.安装virtualenv pip3 install virtualenvpip install -i https://pypi.tuna.tsin ...

  5. Ubuntu 下Python 环境问题

    问题描述: 原先使用Anaconda环境,若卸载后仍不能恢复到系统默认的Python环境. 解决方案: shell 寻找缓存路径,python的扩展/home/tom/anaconda/bin/pyt ...

  6. mac 下 python 虚拟环境的安装和配置

    前言:继续安装中,这节记录 mac 安装 python 虚拟环境,多版本共存... 1. 安装 pip -- python的包管理工具: sudo easy_install pip 安装成功,出现下面 ...

  7. mac下Python安装路径的说明

    Python安装路径的说明 mac在安装Python时, 对不同的安装方式 不同的型号均会安装在不同的文件夹下 安装方式 路径 系统默认(2.7) /System/Library/Frameworks ...

  8. 在MAC下 Python+Django+mysql配置

    今天在搭建Django+mysql环境的时候遇到了一点问题,记录下来. 安装环境:OS X 10.10操作系统,Python 2.7. MySQLdb其实包含在MySQL-python包中,因此无论下 ...

  9. [转]mac下Python升级到指定的版本

    以2.7升级到3.3为例1.删除原版本a)删除系统库中的版本sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7 b) ...

随机推荐

  1. 如何使用wepy和 vant-weapp开发小程序

    这里记录一下  使用wepy框架和  vant-weapp库开发小程序废话 不多说 wepy文档: https://tencent.github.io/wepy/document.html#/ van ...

  2. java 图片转base64字符串、base64字符串转图片

    java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...

  3. 通行导论-IP数据网络基础(2)

    传输控制协议(TCP) 差错控制:TCP使用差错控制提供可靠性,包括检测受到损伤.丢失.失序的报文段 实现方法:1.16位检验和,2.确认机制:采用确认证实收到的报文段,3.重传(设置一个重传超时RT ...

  4. jquery取出checkbox多选的值(带全选功能)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. node杂谈(一)

    在node中var作用域为当前js文件 每一个js文件都是一个module对象 global为全局对象,可以用在不同js之间访问(不要设立过多的全局对象,除非必要,比如设立生产环境还是开发环境) a ...

  6. 将Windows系统移到另一个硬盘

    原先的128GB SSD,给Windows用是够了,最近虚拟机用得多,靠以前的SSD外挂着用,实在有点不爽,就入手一个256GB的,重装系统是个令人头疼的事情,当然不能干.想起来以前另一个机器操作的时 ...

  7. docker 删除所有退出的容器

    方法一: #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, sudo docker ps -a|grep Exited|awk '{print $1}' #查询所有的容器,过滤出E ...

  8. vmware 挂起后不能恢复

    报错:未能锁定主内存文件,还原虚拟机状态时出错 虚拟机目录下有一个文件夹,xxx.vmem.lck,里面的lck文件是很久以前的,把它删掉重新恢复就可以了.

  9. g++ 学习笔记

    gcc and g++分别是GNU的c & c++编译器.gcc/g++在执行编译的时候一般有下面4步: 1 预处理,生成.i的文件. 命令如下:g++ -E  test.cpp 此命令只进行 ...

  10. Hello The Merciless World!

    这里是一名FJ蒟蒻OIer的Blog,ID在上面自己不会看嘛QAQQQ是GldHkkowo(很随性的名字w 联系方式:QQ:735900335 加 Q Q 看 蒟 蒻 WA 题 爱好? 死宅的爱好是什 ...