MacOS 下多 Python 版本说明

图片[1]-MacOS 下多 Python 版本说明-阿吉学习小站

好的配置环境是保证产能的前提

应大数据和机器学习的要求,对处理数据的计算机语言需求越来大,之前虽然弄过 Python 环境,但是没有彻底搞清楚 Python 多版本执行程序以及多版本的模块位置,导致自己电脑上环境紊乱,今天花了点功夫解决下。

说明


我的电脑是 MacOS 系统,并且 MacOS 系统是自带了 Python,而之前在捣鼓 Python 时,可能后装了很多次不同的版本,导致在我电脑上的的 Python 有诸多问题,这里主要说明以下几个问题:

  1. 多版本 Python 的安装路径识别
  2. 多版本 Python 对应的 pip 命令识别
  3. 多版本 Python 对应的 pip 安装模块位置确定

安装路径识别

Python 现在分为两个版本 2.X 版本 和 3.X 版本,两代版本并不能够完全兼容,因此两个版本的模块包也会分开安装的,因此完全把握两种版本环境是很有必要的。

Python 2.X版本

此版本对应旧版本,其默认执行命令是 python, 因此我们在终端输入 python --version 通常会显示 2.X 的版本字样。

通过 which python 命令查看 Python 路径,然后用 ls -l 可查看该路径的 Python 执行文件属性如下:

图片[2]-MacOS 下多 Python 版本说明-阿吉学习小站

上图显示 /usr/bin/python 文件非软链接文件,由于我们自己安装的 Python 通常是用软链接的方式链接到安装目录,因此这里的 python 应该属于本机自带的 Python, 其安装位置即为 /usr/bin/python.

Python 3.X版本

此版本对应新版本,其默认执行命令是 python3, 不是完全兼容旧版本的,但是代表了 Python 的发展方向,新人的话建议直接学习此版本。

通过 which python3 命令查看 Python3 路径,然后用 ls -l 查看路径的的文件属性:

图片[3]-MacOS 下多 Python 版本说明-阿吉学习小站

上图显示 /usr/local/bin/python3 文件为软链接文件,链接的源位置为 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3, 因此这就是 Python3 的安装位置,由此也可以知道当前 Python3 的版本是 3.5.

实际上系统自带的命令通常安装在 /usr/bin/ 目录下,而用户自己安装的命令通常在 /usr/local/bin/ 目录下,这通常是因为普通安装命令都是在 /usr/local/bin/ 下有写的权限的。

pip 命令识别

Python 版本的不同导致 Python 下的包管理工具 pip 命令也不同,因此使得 pip 命令也产生很多的 pipX 命令。通常而言,对于 Python2x 版本其对应的 pip 命令为 pip, 而对于 Python3.X 版本其对应的 pip 命令为pip3. 此外,还有一种可同时执行不同版本 Python 的 pip 方式:python -m pip install xxx 或者 python3 -m pip install xxx, 这就不需要用不同的命令了,但是前提还是需要摸清自己本机的环境。

Python2.X 版本的 pip

通过 which pip 查看 pip 路径,然后用 ll 查看文件属性,该文件为非链接文件,其与上面的 Python 相对应

图片[4]-MacOS 下多 Python 版本说明-阿吉学习小站

我们也可以通过命令来查看 pip 目录中有哪些 pip:

Bash

ll /usr/local/bin | grep pip

结果:

图片[5]-MacOS 下多 Python 版本说明-阿吉学习小站

我们看到上图有好多 pip 命令,到底哪些可用或者一致呢?我们可以看这些命令的 创建时间 基本可以判断前三个 pip 是同一时刻安装的,最后一个是另外时间安装的 pip 工具,我们可以通过 pip 命令安装一个已经存在的模块查看其已经安装的模块路径如下图,我们可以知道 pip, pip2, pip2.7 都是 Python2.X 版本的python 命令所对应的 pip.

图片[6]-MacOS 下多 Python 版本说明-阿吉学习小站

Python3.X 版本的 pip3

通过 which pip3查看 pip 路径,然后用 ll 查看文件属性如下图,然而,pip3 并没有此命令,但我们从之前的查看命令可知存在 pip3.5 命令

Bash

ll /usr/local/bin | grep pip

再次执行 which pip3.5,情况如下:

图片[7]-MacOS 下多 Python 版本说明-阿吉学习小站

我们天真地以为 pip3.5 命令就是我们 Python3.X 版本的 pip,我们执行安装命令试试 pip3.5 install numpy,结果如下:

图片[8]-MacOS 下多 Python 版本说明-阿吉学习小站

执行报错,这错误网上有解决方法 这里, 但是我们这里不确定此 Python3.5 是否关联我们本机的 Python3,因为这有可能是自己以前安装了 Python3.5 又卸载后存留的。这里我们再试试另外一种可能,就是本机 Python3 的 pip 在另外地方,只不过它没有在环境变量中,我们可以如下测试 python3 -m pip --version, 我们也可以尝试安装一个包,如图,可以确定通过 Python3 内部的 pip 可以将模块安装在内部目录里。

图片[9]-MacOS 下多 Python 版本说明-阿吉学习小站

至此可以确定,Python3 对应的 pip 在自己安装路径内部,而不通过环境变量直接定位,需要通过 python3 -m pip install xxxx 来安装模块。

pip模块安装路径确定

到这里我想大家已经知道如何确定 pip 模块的安装位置了,主要要首先确定 Python 各个版本对应的 pip,然后通过 pip 的重复安装即可确定模块安装位置。

注意:下面的安装位置仅仅是我自己系统上的环境位置,并非适用你自己的环境,需要自己确定自己的 Python 版本和 pip 版本

Python2.X版本的模块位置:

Bash

pip install numpy

Python3.X版本的模块位置:

Bash

python3 -m pip install numpy

总结

Python2.X:

执行路径: /usr/bin/python

pip 路径: /usr/local/bin/pip/usr/local/bin/pip2/usr/local/bin/pip2.7

模块位置:/usr/local/lib/python2.7/site-packages

Python3.X:

执行路径: /Library/Frameworks/Python.framework/Versions/3.5/bin/python3

pip 路径: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pip-9.0.1-py3.5.egg

模块位置: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages

Python 存在不统一路径查找的原因:

(1). 通过 pkg 安装包: Python 官网 https://www.python.org/downloads/, 下载后文件为 python-3.6.3-macosx10.6.pkg 形式的文件,这种文件可直接双击安装,其安装的位置通常在 /Library/Frameworks 下。

(2). 通过 homebrew 安装: Homebrew 官网 https://brew.sh/, 其安装方式为:

Bash

brew install python # 安装python2.X
brew install python3 # 安装python3.X

这种方式安装是先将包下载在 /usr/local/Cellar 目录下,然后自动在 /usr/local/bin/ 下新建一个执行链接到 /usr/local/Cellar.

如:我们安装一个wget 工具:brew install wget,然后我们可以查看wget的原路径:

图片[10]-MacOS 下多 Python 版本说明-阿吉学习小站

对于安装用 brew 安装 Python3,其也会自动下载对应的 pip3 的,并且都会将其放置在 /usr/local/bin/目录下,以软链接的形式链接到 /usr/local/Cellar下的对应文件.

(3). 通过源码包: 这会自动放置在 /usr/local/bin 目录下,且不会用软链接。

参考

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

    暂无评论内容