python2和3同时用pip的方法
Python 2和Python 3都有自己的包管理工具pip。然而,在Ubuntu等一些操作系统中,使用pip指令默认是指Python 2的pip。在这样的情况下,如果我们想要使用Python 3的pip,就需要在指令后面加上一个3,像这样:
pip3 install package
但是,这么做的话会有一些不便。比如,需要记忆两个不同的指令。此外,某些Python脚本如果想要同时兼容Python 2和Python 3,则需要同时安装这两个版本的包,这时就更加麻烦。
那么,我们有什么方法来方便地在Python 2和Python 3之间共享pip呢?
一、使用pipenv
pipenv是一个创建Python虚拟环境并管理依赖关系的工具。可以同时在Python 2和Python 3下使用。使用pipenv,我们只需要在shell中输入以下指令就能够自动创建包含Python 2和Python 3两个版本的虚拟环境:
pipenv --two # 创建Python 2环境 pipenv --three # 创建Python 3环境
其中,pipenv会检测系统中安装的Python版本,然后自动为不同版本创建相应的虚拟环境。
然后,我们需要通过以下指令来进入虚拟环境:
pipenv shell
进入虚拟环境后,我们就可以使用pip指令来安装对应版本的包,pip工具也可以自动判断当前使用的是哪个版本的Python。
需要说明的是,pipenv仅适用于虚拟环境下使用。如果我们想要在全局环境下使用pip,则可以考虑下面的方法。
二、使用pip命令别名
我们可以在.bashrc文件中为Python 2和Python 3分别创建pip别名。这样,在命令行中我们只需要输入pip即可自动调用对应版本的pip工具。
在.bashrc文件中,我们可以为Python 2和Python 3各添加一行指令:
alias pip='python -m pip' alias pip3='python3 -m pip'
这样,当我们在shell中输入pip安装包时,会自动调用Python 2下的pip工具,而输入pip3安装包时,则会调用Python 3下的pip工具。
值得注意的是,这种方法只对当前用户生效。如果我们需要为所有用户创建pip别名,则需要修改/etc/bash.bashrc文件。
三、使用pipx
pipx是一个Python包的独立运行环境管理器,类似于virtualenv,但提供了更多的功能。
使用pipx,我们可以在Python 2和Python 3下共享包,而不需要将其安装到虚拟环境中。pipx将安装的包分别保存在各自的目录中,同时提供了方便的pipx命令,用于在Python 2和Python 3下安装和调用包。
使用pipx,我们需要先在shell中安装pipx:
python3 -m pip install --user pipx
安装完成后,我们可以使用以下指令在Python 2和Python 3下分别安装包:
pipx install package # 安装到Python 3环境中 pipx install package --python python2 # 安装到Python 2环境中
在这些指令中,我们可以使用--python选项来指定安装到哪个Python环境中,也可以仅使用pipx指令来使用已安装的包。
需要注意的是,使用pipx时,我们需要在.bashrc或者/etc/bash.bashrc文件中添加以下指令,以便使用pipx命令:
export PATH="$PATH:/home/yourusername/.local/bin"
这个路径是因为pipx默认将安装路径设置为~/.local/bin/。
总结
本文介绍了三种方法来在Python 2和Python 3同时使用pip,我们可以根据自己的需求来选择使用哪种方法。
pipenv:适用于虚拟环境下使用。
pip命令别名:适用于全局环境下使用,且只对当前用户生效。
pipx:可以在全局环境下共享包,适用于多个用户共享使用同一包的场景。
