有什么方法可以pip
很好地使用多个版本的 Python?例如,我想使用pip
显式安装东西到我的站点 2.5 安装或我的站点 2.6 安装。
例如easy_install
,我使用easy_install-2.{5,6}
.
而且,是的——我知道 virtualenv,不——它不是解决这个特定问题的方法。
当前的建议是使用python -m pip
,python
您要使用的 Python 版本在哪里。这是建议,因为它适用于所有版本的 Python,以及所有形式的 virtualenv。例如:
# The system default python:
$ python -m pip install fish
# A virtualenv's python:
$ .env/bin/python -m pip install fish
# A specific version of python:
$ python-3.6 -m pip install fish
上一个答案,留给后代:
从 0.8 版本开始,Pip 支持pip-{version}
. 您可以像使用它一样使用它easy_install-{version}
:
$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage
编辑: pip 将其架构更改为使用pipVERSION
而不是pip-VERSION
在 1.5 版中。如果您有,您应该使用以下内容pip >= 1.5
:
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage
检查https://github.com/pypa/pip/pull/1053了解更多详情
参考:
在 Windows 上,如果您选择在 Python 3 安装期间安装它,则可以通过Python 启动器使用给定的 Python 版本执行 pip 模块。py.exe
py -3 -m pip install packagename
py -2 -m pip install packagename
您可以更具体并请求 Python 的确切子版本:
py -3.6 -m pip install packagename
要获取通过启动器可用的所有已安装 Python 版本的列表,请运行:
py --list
或者,您可以直接启动所需的 Python 可执行文件:
C:/path/to/specific/python.exe -m pip install packagename
/path/to/python2.{5,6} /path/to/pip install PackageName
不工作?
要使其适用于尚未安装 pip 的任何 python 版本,您需要下载 pip 并执行python*version* setup.py install
. 例如python3.3 setup.py install
. 这解决了评论中的导入错误。(正如@hbdgaf 所建议的那样)
我默认安装了 python 2.6(Amazon EC2 AMI),但我的应用程序需要 python2.7 和一些外部包。假设您已经安装了 python2.7 和默认 python(在我的例子中是 2.6)。以下是如何为非默认 python2.7 安装 pip 和包
为您的 python 版本安装 pip:
curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py
使用特定的 pip 版本安装包:
pip2.7 install mysql-connector-python --allow-external mysql-connector-python
它以这种方式在 Windows 中为我工作:
我将 python 文件 python.py 和 pythonw.exe 的名称更改为 python3.py pythonw3.py
然后我只是在提示符下运行了这个命令:
python3 -m pip install package
其他答案显示了如何将 pip 与 2.X 和 3.X Python 一起使用,但没有显示如何处理多个 Python 发行版(例如原始 Python 和 Anaconda Python)的情况。
我总共有 3 个 Python 版本:原始 Python 2.7 和 Python 3.5 以及 Anaconda Python 3.5。
这是我将软件包安装到的方式:
原始Python 3.5:
/usr/bin/python3 -m pip install python-daemon
原始Python 2.7:
/usr/bin/python -m pip install python-daemon
蟒蛇 Python 3.5:
python3 -m pip install python-daemon
或者
pip3 install python-daemon
更简单,因为 Anaconda 会覆盖用户环境中的原始 Python 二进制文件。
当然,在 anaconda 中安装应该使用conda
命令完成,这只是一个示例。
此外,请确保已为该特定 python 安装了 pip。您可能需要手动安装 pip。这适用于 Ubuntu 16.04:
sudo apt-get install python-pip
或者
sudo apt-get install python3-pip
我最近自己遇到了这个问题,发现在我也有 Python 2 的 Linux 系统上,我没有为 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>
pip 也是一个 python 包。因此,将模块安装到特定 python 版本的最简单方法如下
python2.7 /usr/bin/pip install foo
或者
python2.7 -m pip install foo
所以显然有多个版本easy_install
和 pip
。这似乎是一个很大的混乱。无论如何,这就是我在 Ubuntu 12.10 上为 Python 2.7 安装 Django 所做的:
$ sudo easy_install-2.7 pip
Searching for pip
Best match: pip 1.1
Adding pip 1.1 to easy-install.pth file
Installing pip-2.7 script to /usr/local/bin
Using /usr/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip
$ sudo pip-2.7 install django
Downloading/unpacking django
Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded
Running setup.py egg_info for package django
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
Running setup.py install for django
changing mode of build/scripts-2.7/django-admin.py from 644 to 755
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
$ python
Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>>
从这里:https ://docs.python.org/3/installing/
以下是如何为同时安装linux、mac、posix的各种版本安装软件包:
python2 -m pip install SomePackage # default Python 2
python2.7 -m pip install SomePackage # specifically Python 2.7
python3 -m pip install SomePackage # default Python 3
python3.4 -m pip install SomePackage # specifically Python 3.4
python3.5 -m pip install SomePackage # specifically Python 3.5
python3.6 -m pip install SomePackage # specifically Python 3.6
在Windows上,将 py Python 启动器与 -m 开关结合使用:
py -2 -m pip install SomePackage # default Python 2
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3 -m pip install SomePackage # default Python 3
py -3.4 -m pip install SomePackage # specifically Python 3.4
在 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
安装多个版本的 Python 和相应的包。
同一台 Windows 机器上的 Python 版本:2.7、3.4 和 3.6
安装所有 3 个 Python 版本:
所有 3 个 Python 版本的 PATH:
重命名版本的可执行文件:
检查所有版本的命令提示符:
为每个版本单独安装软件包
如果您有多个版本以及多个体系结构(32 位、64 位),则需要在版本末尾添加 -32 或 -64。
对于 Windows,转到 cmd 并键入 py --list 它将生成您已安装的版本。该列表将如下所示:
Installed Pythons found by py Launcher for Windows
-3.7-64 *
-3.7-32
-3.6-32
作为示例的完整命令将是:
py -3.6-32 -m pip install (package)
如果您想更深入地了解,要在特定版本的 python 上安装特定版本的包,请在包之后使用 ==(version)。举个例子,
py -3.6-32 -m pip install opencv-python==4.1.0.25
这是我对这个问题的看法。适用于 Python3。主要特点是:
先决条件:如果您正在使用一些没有安装额外草皮的准系统瘦客户端,您应该首先运行它(至少在 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
步骤如下:
如果您以其他方式安装了几个额外的 python 版本,请摆脱它们,例如,删除$HOME/.local/lib/python3.x等(也是全局安装的)。不过不要碰你系统的默认 python3 版本。
不同python版本的下载源码在以下目录结构下:
$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/
...
在每个“Python-3.xy/”目录中,执行以下操作(不要在任何步骤中使用“sudo”!):
mkdir root
./configure --prefix=$PWD/root
make -j 2
make install
virtualenv --no-site-packages -p root/bin/python3.x env
在“python_versions/”创建如下文件:
env_python3x.bash:
#!/bin/bash
echo "type deactivate to exit"
source $HOME/python_versions/Python-3.x.y/env/bin/activate
现在,只要您想选择 python3.x,请执行
source $HOME/python_versions/env_python3x.bash
进入virtualenv
在 virtualenv 中,安装你最喜欢的 python 包
pip install --upgrade package_name
要退出 virtualenv 和 python 版本,只需键入“deactivate”
更新
似乎--no-site-packages
已弃用。有一个简单的解决方法:激活 virtualenv 后,只需将 HOME env 变量指向实际主目录以外的其他位置,即:
export HOME=some/where/else
一般来说,一个很好的方法是:
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 使用你的 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 中启用 virtualenv(当然,你已经在你的 docker 镜像中构建了它):
ENV VIRTUAL_ENV=/home/USER/Python-3.x.y/env
ENV PYTHONPATH=
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
您可以使用以下命令之一:
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
对于 python 3 和 Windows 操作系统,我总是使用这种语法来安装不同版本的包:
首先,我总是使用 Git Bash 命令提示符。
这里是安装 urllib 包的示例。
默认 Python 版本:(普通的 pip 命令)
pip install urllib3
对于其他版本
py -3.8 -m pip install urllib3
py => 对于 python
-3.8 => 版本(我使用的是 3.8.7 版本)但如果您使用的是 3.7.7 版本,它将是“-3.7”
-m : 只是因为或为了修改
pip install urllib3:普通的 pip 命令
这里的大多数答案都解决了这个问题,但我想补充一些关于/usr/local
在 CentOS 7 上创建 python 的替代安装时一直让我感到困惑的东西。当我在那里安装时,它看起来像 pip 工作,因为我可以使用pip2.7 install
和它将安装模块。但是,我无法弄清楚为什么我新安装的 python 版本没有看到我正在安装的内容。
原来在 CentOS 7 中,文件夹中已经有一个 python2.7 和一个 pip2.7 /usr/bin
。要为你的新 python 发行版安装 pip,你需要专门告诉 sudo 去/usr/local/bin
sudo /usr/local/bin/python2.7 -m ensurepip
这应该将 pip2.7/usr/local/bin
与您的 python 版本一起安装在您的文件夹中。诀窍是,当您要安装模块时,您要么需要修改 sudo$PATH
变量以包含,/usr/local/bin
要么需要执行
sudo /usr/local/bin/pip2.7 install <module>
如果要安装新模块。我花了很长时间才想起那sudo
不是立即看到/usr/local/bin
的。
背景:Archlinux
行动:
安装python2-pip:
sudo pacman -S python2-pip
你现在有了 pip2.7:
sudo pip2.7 install boto
测试(在我的情况下我需要'boto'):
运行以下命令:
python2
import boto
成功:没有错误。
退出:Ctrl+D
例如,如果您将其他版本(例如 3.5)设置为默认值并希望为 python 2.7 安装 pip:
例如,您可以转到 C:\Python2.7\Scripts,然后从该路径运行 cmd。之后你可以运行 pip2.7 install yourpackage ...
这将为该版本的 Python 安装包。
这可能是完全错误的事情(我是 python 菜鸟),但我只是进去编辑了 pip 文件
#!/usr/bin/env python3 <-- I changed this line.
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
专门针对 Windows: \path\to\python.exe -m pip install PackageName有效。
如果您同时安装了两者python3.6
并python3.7
希望在默认情况下使用pip
,python3.7
那么您应该执行以下操作:
首先确保你已经pip
安装了python3.7
python3.7 -m pip install -U pip
现在pip3.7
必须可用,所以我们编辑.bashrc
nano ~/.bashrc
将以下行添加到它
alias pip=pip3.7
为了使更改生效,请在 shell 中键入:
source ~/.bashrc
现在,如果您键入:
pip --version
你应该得到:
来自 /usr/local/lib/python3.7/dist-packages/pip 的 pip 20.1.1(python 3.7)
这意味着,如果您使用,例如:
pip install <package>
它会安装<package>
forpython3.7
另一种可能的方法是使用 conda 和 pip。有时您可能只想使用其中一个,但如果您确实需要设置特定版本的 python,我将两者结合起来。
我用我想要的 python 创建了一个起始 conda 环境。如这里https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html。或者,您可以仅使用 conda 设置整个环境。
conda create -n myenv python=3.6.4
然后用你喜欢的 python 激活你的环境。此命令可能会因操作系统而异。
source activae myenv
现在您的 python 处于活动状态,那么您可以继续使用 conda 但如果您需要/想要使用 pip:
python -m pip -r requirements.txt
在这里你有一个可能的方法。
对于搅拌机:
/usr/bin $ python3.7 -m pip install irc