当机器上同时装有 Python2.7 和Python 3.x 两个版本,会导致在Shell中执行 Python 命令时冲突,比如我们先安装的Python2.7,
在Path中也默认加入了Python2.7/ 路径的索引,当我们想要执行Python3.X的Python命令时系统会默认去找Python2.7/目录下的Python指令去执行,
这个就是问题的关键,随之而来的还有pip命令等 。
解决方式有两种:
1.根据不同版本分别将Python指令改名。
将 Python2.7 /python.exe 和 将 Python2.7 /pythonw.exe 改为
Python2.7 /python2.exe 和 将 Python2.7 /pythonw2.exe
将Python3.x /python.exe 和 将 Python3.x /pythonw.exe改为
Python3.x /python3.exe 和 将 Python3.x /pythonw3.exe
同时将两个版本路径配置到环境变量中
然后在Shell中分别使用不同指令版本来执行
对于pip指令我们通常的使用方式是
pip install 模块名称
然而我们添加了两个版本Pyhtonx/Script/ 这两个目录下都有pip指令,这又会产生冲突。所以要像下面这样使用
python2 -m pip install 模块名称
python3 -m pip install 模块名称
查看pip版本:
python2 -m pip -V
python3 -m pip -V
2.借助其他发行版Python管理包如 Anaconda
anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。
conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。
它提供了两个关键功能:
- :提供包管理,功能类似于 pip,Windows 平台安装第三方包经常失败的场景得以解决。
- :提供虚拟环境管理,功能类似于 virtualenv,解决了多版本Python并存问题。
下载地址:https://repo.continuum.io/archive/
下载后通过以下方式创建新环境:
# 基于 python3.6 创建一个名为test_py3 的环境
conda create --name test_py3 python=3.6
# 基于 python2.7 创建一个名为test_py2 的环境
conda create --name test_py2 python=2.7
# 激活 test 环境
activate test_py2 # windows
source activate test_py2 # linux/mac
# 切换到python3
activate test_py3
激活环境时会提示下载扩展包(默认会安装以下组件包):