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

因为python2python3在一定时期内,都还会同时共存。那么不同的python版本,也需要不同的pip。也就是本文中所描述的pip2pip3,也就是基于上述概念而引申出来的。

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

用于python2pip,苏南大叔称之为pip2。那么,同理,用于python3pip,就被苏南大叔称之为pip3了。这就是本文中pip2pip3的由来。而默认的pip命令,就可以在pip2pip3之间切换。

本文的写作测试环境为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。添加代码如下:

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/pip'
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/pip'
alias python='python2'
alias pip='pip2'
alias sudo='sudo '

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

说明:

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

升级pip

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

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

总结

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

 【源码】代码片段及相关软件点此获取

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

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!