有没有办法让pip在多个版本的Python中都能很好地运行?例如,我想使用pip显式地将东西安装到我的站点2.5安装或站点2.6安装中。

例如,对于easy_install,我使用easy_install-2.{5,6}。

是的,我知道virtualenv,不,它不是这个特殊问题的解决方案。


当前回答

例如,您可以转到C:\Python2.7\Scripts,然后从该路径运行cmd。然后你可以运行pip2.7安装你的包…

这将为该版本的Python安装包。

其他回答

我自己最近也遇到了这个问题,发现在我的Linux系统上,Python 2也没有得到正确的Python 3的pip。

首先,你必须确保已经为你的python版本安装了pip:

对于Python 2:

sudo apt-get install python-pip

对于Python 3:

sudo apt-get install python3-pip

然后,要安装一个版本的Python或其他版本的包,只需在Python 2中使用以下命令:

pip install <package>

或Python 3:

pip3 install <package>

您可以使用以下命令之一:

pip2 install SomePackage
pip3 install SomePackage

python2 -m pip install SomePackage  
python3 -m pip install SomePackage 

当然,还要确保安装了正确的pip版本

sudo apt-get install python-pip
sudo apt-get install python3-pip

我自己没有使用过这些命令,但是上面的一些回答建议使用它们来指定你想使用的python版本

pip-2.7 install SomePackage
python-3.6 -m pip install SomePackage

以下是我对这个问题的看法。适用于Python3。主要特点有:

每个Python版本都是从源代码编译的 所有版本都安装在本地 不会以任何方式破坏系统的默认Python安装 每个Python版本都使用virtualenv进行隔离

前提条件:如果你正在使用一些基本的瘦客户端,没有安装额外的turf,你应该首先运行这个(至少在ubuntu 18.04中,为了方便,额外的包添加了):

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install -y build-essential cmake

sudo apt-get install -y zlib1g zlib1g-dev libsqlite3-dev \
openssl libssl-dev libffi-dev unzip pciutils net-tools \
libblas-dev gfortran libblas3 

具体步骤如下:

If you have several extra python versions installed in some other way, get rid of them, e.g., remove $HOME/.local/lib/python3.x, etc. (also the globally installed ones). Don't touch your system's default python3 version though. Download source for different python versions under the following directory structure: $HOME/ python_versions/ : download Python-*.tgz packages here and "tar xvf" them. You'll get directories like this: Python-3.4.8/ Python-3.6.5/ Python-3.x.y/ ... At each "Python-3.x.y/" directory, do the following (do NOT use "sudo" in any of the steps!): mkdir root ./configure --prefix=$PWD/root make -j 2 make install virtualenv --no-site-packages -p root/bin/python3.x env At "python_versions/" create files like this: env_python3x.bash: #!/bin/bash echo "type deactivate to exit" source $HOME/python_versions/Python-3.x.y/env/bin/activate Now, anytime you wish to opt for python3.x, do source $HOME/python_versions/env_python3x.bash

进入virtualenv

在virtualenv中,安装你喜欢的python包 PIP install——upgrade package_name 要退出virtualenv和python版本,只需输入“deactivate”

更新

似乎不赞成使用无站点包。有一个简单的解决方法:一旦你激活了virtualenv,只要将HOME env变量指向其他地方,而不是你实际的主目录,即:

export HOME=some/where/else

一般来说,一个很好的方法是:

创建virtualenv 激活virtualenv 如果你想“回收”现有的库到你的virtualenv,软链接它们从你现有的安装,即。 ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/ export PYTHONPATH=, export HOME=/some/other/dir

现在您应该有了自定义隔离的virtualenv。

更新2 / sudo

不想强迫sudo使用你的virtualenv吗?

Defaults        secure_path="/home/USENAME/Python-3.x.y/env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Defaults        env_keep += "VIRTUAL_ENV"
Defaults        env_keep += "PYTHONPATH"

现在尝试“sudo python3—version”,魔术应该会发生

更新3 / docker

在docker中启用virtualenv(当然,你已经在docker镜像中构建了它):

ENV VIRTUAL_ENV=/home/USER/Python-3.x.y/env
ENV PYTHONPATH=
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

如果你同时安装了python3.6和python3.7,并且希望在默认情况下对python3.7使用pip,那么你应该这样做:

首先,确保为python3.7安装了pip

python3.7 -m pip install -U pip

现在pip3.7必须可用,因此我们编辑.bashrc

nano ~/.bashrc

向它添加下面的行

alias pip=pip3.7

为了使更改生效,在shell中输入:

source ~/.bashrc

现在如果你输入:

pip --version

你应该得到:

PIP 20.1.1 from /usr/local/lib/python3.7/dist-packages/ PIP (python 3.7)

这意味着,如果你使用,例如:

pip install <package>

它将为python3.7安装<package>

在Linux、Mac OS X和其他POSIX系统上,使用带版本控制的Python命令和-m开关来运行pip的适当副本:

python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage

(也可以使用版本适当的PIP命令)

在Windows上,将py Python启动器与-m开关结合使用:

py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3.4 -m pip install SomePackage  # specifically Python 3.4

如果py -3.4有错误,那么试试:

pip install SomePackage