我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

因为python2python3在一定时期内,都还会同时共存。那么不同的python版本,也需要不同的pip。也就是本文中所描述的pip2pip3,也就是基于上述概念而引申出来的。用于python2pip,苏南大叔称之为pip2。那么,同理,用于python3pip,就被苏南大叔称之为pip3了。这就是本文中pip2pip3的由来。而默认的pip命令,就可以在pip2pip3之间切换。

苏南大叔:mac系统,python2/3共存时,如何区分各自的pip ? - python
mac系统,python2/3共存时,如何区分各自的pip ?(图3-1)

本文的写作测试环境为mac。在关于本文中出现的python2python3的概念,可以查看本文的前置阅读文章,来具体了解一下相关写作背景。

特定版本python安装特定版本pip

安装pip2的话,就用python2执行安装脚本。同理,安装pip3的话,就用python3执行安装脚本。下面是使用python2安装pip2的范例。

curl -o get-pip.py 'https://bootstrap.pypa.io/get-pip.py'
sudo python2 get-pip.py
代码里面的python2是个自定义的alias命令,该定义位于:~/.bash_profile文件。

要是想获得pip3,那么要执行的命令可能是:

curl -o get-pip.py 'https://bootstrap.pypa.io/get-pip.py'
sudo python3 get-pip.py
对于命令中的别名python2python3,如果您不想折腾的话,还可以不使用别名,而使用真正的python绝对路径,来解决这个问题。

正常情况下来说,上述命令会提示:python2 command not found。也就是说aliassudo的情况下,不会被识别。

实际上遇到的问题是:不识别别名

上一步的操作仅仅是个理论值,在实际的操作中,会出现sudo不识别alias命令的情况。那么这种情况下,因为安装文件的缘故,必须需要使用sudo。这就需要特殊处理,使得sudo下能够识别出命令python2这个自定义的别名了。

解决方式就是,再增加一个新的特殊alias。配置文件位置是:~/.bash_profile

vi ~/.bash_profile

添加代码如下:

alias sudo='sudo '
代码有些邪门,等号左右,差别就是一个空格。读者们可要仔细查看。

然后使用下面的命令,刷新全局变量,识别新的设置。

source ~/.bash_profile

这样处理之后,就可以愉快的识别python2这个自定义别名了。解决好这个问题后,就可以继续安装pip命令了。

网上有的教程上说,修改/etc/sudoers这个文件,至少在本文的范围内,这个方案是不生效的。而且修改错误的话,会造成mac系统奔溃,千万别乱改这个文件。

设置alias,切换pip2pip3

正常安装了python2pip之后,依然要设置~/.bash_profile文件。添加pip2pip3的切换语句如下:

alias pip2='/usr/local/bin/pip'
alias pip3='/Library/Frameworks/Python.framework/Versions/3.7/bin/pip3.7'
alias pip='pip2'

这样的话,给python2安装库的时候,就使用pip2 install。而给python3安装库文件的时候,语句就是pip3 install了。默认的pip就是pip2,注意和python的默认值切换保持一致。

总体的代码

关键文件还是:~/.bash_profile。目前,其关键代码如下:

alias python2='/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7'
alias python3='/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7'
alias pip2='/usr/local/bin/pip'
alias pip3='/Library/Frameworks/Python.framework/Versions/3.7/bin/pip3.7'
alias python='python2'
alias pip='pip2'
alias sudo='sudo '

苏南大叔:mac系统,python2/3共存时,如何区分各自的pip ? - bash_profile
mac系统,python2/3共存时,如何区分各自的pip ?(图3-2)

说明:

  • sudo别买是为了识别其它别名而设置的。
  • python别名和pip别名,要成对切换,版本一一对应。
  • python2python3pip2pip3的具体位置,请根据实际情况修改。可能用到的查找语句是:findwhich或者whereis

升级pip

两个pip也是各自升级自己的pip

sudo pip2 install --upgrade pip
sudo pip3 install --upgrade pip
pip2 --version
pip3 --version

pip升级命令

这里附带pip的升级命令,用者自取。

python -m pip install --upgrade pip

苏南大叔:mac系统,python2/3共存时,如何区分各自的pip ? - pip-upgrade
mac系统,python2/3共存时,如何区分各自的pip ?(图3-3)

总结

看似简单的几组python命令,实则需要特殊注意和特殊设置才能正常使用。更多苏南大叔提供的python相关文字,请点击下面的链接查看。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    bashrc