Mac OS中Pyhon版本的若干问题

Mac OS中Pyhon版本的若干问题


近日由于在MacOS中terminal中使用python或者pip命令,时常搞不清到底使用的是哪里安装的python,哪个版本的python而苦恼。例如我明明用pip安装了某些插件,怎么运行的时候就找不到了呢?

首先要解决的第一个问题是如何知道终端中运行的python命令是链接到哪一个具体的文件。这里我们可以使用which python来查看。例如笔者得到的结果是/Users/xiang/anaconda3/bin/python

其次是知道一些常见安装的python的目录在哪?这里我们引用知乎上的一个帖子,上面有详细的解释。

  1. Mac OS自带的python
    系统自带的python安装在/System/Library/Frameworks/Python.framework/Versions目录下,里面包含若干个版本。例如/System/Library/Frameworks/Python.framework/Versions/2.7就是python 2.7的文件夹。其中,解释器为该目录下./bin/python2.7
  2. 用户安装的python默认环境
    用户自己安装的python在/Library/Frameworks/Python.framework/Versions下。这个目录下可能存在python2和python3的若干个版本。解释器与第一种情况中的类似。
  3. 用户安装了anaconda3
    用户安装了anaconda3后,自带的python默认环境在/Users/xiang/anaconda3目录下,解释器为./bin/python

那么在终端下直接输入python到底会运行哪个环境下的python呢,到底是python2还是python3呢?这就涉及到Mac OS启动时要加载的系统配置文件了(包括~/.bash_profile),所有的命令会根据配置文件中的环境变量来选择到底运行哪一个,并且是后者覆盖前者。例如在配置文件输入python命令,系统会在配置文件中的路径查找,从后往前找,一直找到python命令为止。

例如笔者~/.bash_profile文件内容如下

# added by Anaconda3 5.0.1 installer
export PATH="/Users/xiang/anaconda3/bin:$PATH"

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

从上面我们可以看出我们先将anaconda3的路径加入到了配置文件中,然后将自己安装的python3.6的路径加入到了配置文件中。

那我们在terminal中输入python -V试一试看看效果。终端中显示Python 3.6.3 :: Anaconda, Inc.,这和我们预料的结果有所不同,明明是自行安装的python3.6在配置文件的最后,输入python -V应该不是anaconda才对呀。

我们分别到anaconda3和python3.6的路径下分析下原因。
下面是anaconda的bin目录下的文件(部分)。

lrwxr-xr-x  1 xiang  staff     9B Nov 16  2017 /Users/xiang/anaconda3/bin/python -> python3.6
-rwxrwxr-x  1 xiang  staff   131B Nov 16  2017 /Users/xiang/anaconda3/bin/python.app
lrwxr-xr-x  1 xiang  staff     9B Nov 16  2017 /Users/xiang/anaconda3/bin/python3 -> python3.6
lrwxr-xr-x  1 xiang  staff    17B Nov 16  2017 /Users/xiang/anaconda3/bin/python3-config -> python3.6m-config
-rwxrwxr-x  1 xiang  staff   3.3M Nov 16  2017 /Users/xiang/anaconda3/bin/python3.6
lrwxr-xr-x  1 xiang  staff    17B Nov 16  2017 /Users/xiang/anaconda3/bin/python3.6-config -> python3.6m-config
lrwxr-xr-x  1 xiang  staff     9B Nov 16  2017 /Users/xiang/anaconda3/bin/python3.6m -> python3.6
-rwxrwxr-x  1 xiang  staff   2.0K Nov 16  2017 /Users/xiang/anaconda3/bin/python3.6m-config
-rwxrwxr-x  1 xiang  staff   131B Nov 16  2017 /Users/xiang/anaconda3/bin/pythonw

这是python3.6的bin目录下的文件(部分)

lrwxr-xr-x  1 root  admin     9B Jan 14  2018 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 -> python3.6
lrwxr-xr-x  1 root  admin    12B Jan 14  2018 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3-32 -> python3.6-32
lrwxr-xr-x  1 root  admin    16B Jan 14  2018 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3-config -> python3.6-config
-rwxrwxr-x  2 root  admin    25K Dec 19  2017 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
-rwxrwxr-x  1 root  admin    13K Dec 19  2017 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-32
lrwxr-xr-x  1 root  admin    17B Jan 14  2018 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config -> python3.6m-config
-rwxrwxr-x  2 root  admin    25K Dec 19  2017 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m
-rwxrwxr-x  1 root  admin   2.0K Dec 19  2017 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config

原来是python3.6的bin目录下没有python这个命令,所以在终端里输入python自然找到的是倒数第二个anaconda3路径下的命令。
我们输入which python3命令测试下,应该得到的是python3.6的路径。测试结果却是也是如此。

关于Mac OS中python版本的问题就到这里了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值