好的配置环境是保证产能的前提
应大数据和机器学习的要求,对处理数据的计算机语言需求越来大,之前虽然弄过 Python 环境,但是没有彻底搞清楚 Python 多版本执行程序以及多版本的模块位置,导致自己电脑上环境紊乱,今天花了点功夫解决下。
说明
我的电脑是 MacOS 系统,并且 MacOS 系统是自带了 Python,而之前在捣鼓 Python 时,可能后装了很多次不同的版本,导致在我电脑上的的 Python 有诸多问题,这里主要说明以下几个问题:
- 多版本 Python 的安装路径识别
- 多版本 Python 对应的 pip 命令识别
- 多版本 Python 对应的 pip 安装模块位置确定
安装路径识别
Python 现在分为两个版本 2.X 版本 和 3.X 版本,两代版本并不能够完全兼容,因此两个版本的模块包也会分开安装的,因此完全把握两种版本环境是很有必要的。
Python 2.X版本
此版本对应旧版本,其默认执行命令是 python
, 因此我们在终端输入 python --version
通常会显示 2.X 的版本字样。
通过 which python
命令查看 Python 路径,然后用 ls -l
可查看该路径的 Python 执行文件属性如下:
上图显示 /usr/bin/python 文件非软链接文件,由于我们自己安装的 Python 通常是用软链接的方式链接到安装目录,因此这里的 python 应该属于本机自带的 Python, 其安装位置即为 /usr/bin/python.
Python 3.X版本
此版本对应新版本,其默认执行命令是 python3
, 不是完全兼容旧版本的,但是代表了 Python 的发展方向,新人的话建议直接学习此版本。
通过 which python3
命令查看 Python3 路径,然后用 ls -l
查看路径的的文件属性:
上图显示 /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 相对应
我们也可以通过命令来查看 pip 目录中有哪些 pip
:
1 | ll /usr/local/bin | grep pip |
结果:
我们看到上图有好多 pip
命令,到底哪些可用或者一致呢?我们可以看这些命令的 创建时间 基本可以判断前三个 pip
是同一时刻安装的,最后一个是另外时间安装的 pip
工具,我们可以通过 pip
命令安装一个已经存在的模块查看其已经安装的模块路径如下图,我们可以知道 pip, pip2, pip2.7 都是 Python2.X 版本的 python
命令所对应的 pip
.
Python3.X 版本的 pip3
通过 which pip3
查看 pip 路径,然后用 ll
查看文件属性如下图,然而,pip3
并没有此命令,但我们从之前的查看命令可知存在 pip3.5
命令
1 | ll /usr/local/bin | grep pip |
再次执行 which pip3.5
,情况如下:
我们天真地以为 pip3.5
命令就是我们 Python3.X 版本的 pip
,我们执行安装命令试试 pip3.5 install numpy
,结果如下:
执行报错,这错误网上有解决方法 这里, 但是我们这里不确定此 Python3.5 是否关联我们本机的 Python3,因为这有可能是自己以前安装了 Python3.5 又卸载后存留的。这里我们再试试另外一种可能,就是本机 Python3 的 pip 在另外地方,只不过它没有在环境变量中,我们可以如下测试 python3 -m pip --version
, 我们也可以尝试安装一个包,如图,可以确定通过 Python3 内部的 pip 可以将模块安装在内部目录里。
至此可以确定,Python3 对应的 pip
在自己安装路径内部,而不通过环境变量直接定位,需要通过 python3 -m pip install xxxx
来安装模块。
pip模块安装路径确定
到这里我想大家已经知道如何确定 pip 模块的安装位置了,主要要首先确定 Python 各个版本对应的 pip,然后通过 pip 的重复安装即可确定模块安装位置。
注意:下面的安装位置仅仅是我自己系统上的环境位置,并非适用你自己的环境,需要自己确定自己的 Python 版本和 pip 版本
Python2.X版本的模块位置:
1 | pip install numpy |
Python3.X版本的模块位置:
1 | 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/, 其安装方式为:
1 | brew install python # 安装python2.X |
这种方式安装是先将包下载在 /usr/local/Cellar 目录下,然后自动在 /usr/local/bin/ 下新建一个执行链接到 /usr/local/Cellar.
如:我们安装一个wget 工具:brew install wget
,然后我们可以查看wget的原路径:
对于安装用 brew 安装 Python3,其也会自动下载对应的 pip3 的,并且都会将其放置在 /usr/local/bin/目录下,以软链接的形式链接到 /usr/local/Cellar下的对应文件.
(3). 通过源码包: 这会自动放置在 /usr/local/bin 目录下,且不会用软链接。