处理多个Python版本和PIP?

时间:2010-05-11 16:32:18

标签: python pip

有没有办法让pip能够很好地使用多个版本的Python?例如,我想使用pip将内容显式安装到我的站点2.5安装或我的站点2.6安装。

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

而且,是的 - 我知道virtualenv,不 - 这不是解决这个特殊问题的方法。

25 个答案:

答案 0 :(得分:481)

current recommendation是使用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在1.5版中将其架构更改为使用pipVERSION而不是pip-VERSION。如果您有pip >= 1.5

,则应使用以下内容
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage

查看https://github.com/pypa/pip/pull/1053了解详情


参考文献:

答案 1 :(得分:82)

在Windows中,您可以通过提及python版本来执行pip模块(您需要确保启动器在您的路径上)

py -3.4 -m pip install pyfora

py -2.7 -m pip install pyfora

或者,您可以直接调用所需的python可执行文件:

/path/to/python.exe -m pip install pyfora

答案 2 :(得分:75)

/path/to/python2.{5,6} /path/to/pip install PackageName不起作用?

为了能够处理任何没有安装pip的python版本,你需要下载pip并执行python*version* setup.py install。例如python3.3 setup.py install。这解决了注释中的导入错误。 (正如@hbdgaf所建议的那样)

答案 3 :(得分:49)

我默认安装了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

答案 4 :(得分:27)

以这种方式在Windows中为我工作:

  1. 我将python文件python.py和pythonw.exe的名称更改为python3.py pythonw3.py

  2. 然后我在提示符中运行了这个命令:

    python3 -m pip install package

答案 5 :(得分:23)

其他答案显示了如何在2.X和3.X Python中使用pip,但没有显示如何处理多个Python发行版的情况(例如原始Python和Anaconda Python)

我总共有3个Python版本:原始Python 2.7和Python 3.5以及Anaconda Python 3.5。

以下是我如何将软件包安装到:

  1. 原始 Python 3.5

    /usr/bin/python3 -m pip install python-daemon
    
  2. 原始 Python 2.7

    /usr/bin/python -m pip install python-daemon
    
  3. Anaconda Python 3.5

    python3 -m pip install python-daemon
    

    pip3 install python-daemon
    

    更简单,因为Anaconda会覆盖用户环境中的原始Python二进制文件。

    当然,应该使用conda命令在anaconda中安装,这只是一个例子。

  4. 另外,请确保为该特定python安装了pip。您可能需要手动安装pip。这适用于Ubuntu 16.04:

    sudo apt-get install python-pip 
    

    sudo apt-get install python3-pip
    

答案 6 :(得分:14)

我最近自己遇到过这个问题,发现我的Linux系统上也没有得到Python 3的正确点,而且还有Python 2。

首先,您必须确保已为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>

答案 7 :(得分:11)

pip也是一个python包。因此,将模块安装到特定python版本的最简单方法是在

之下
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.23.0/ramda.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.1/Rx.min.js"></script>

 python2.7 /usr/bin/pip install foo

答案 8 :(得分:10)

显然,easy_install pip有多个版本。这似乎是一个大混乱。无论如何,这是我在Ubuntu 12.10上安装Django for Python 2.7所做的:

$ 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
>>> 

答案 9 :(得分:7)

在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

答案 10 :(得分:6)

从这里开始: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

答案 11 :(得分:2)

这里的大部分答案都解决了这个问题,但是我想在CentOS 7上的/usr/local中添加一些让我一直在混淆的东西让我感到困惑。当我在那里安装时,它看起来像pip工作,因为我可以使用pip2.7 install,它会安装模块。但是,我无法弄清楚为什么我新安装的python版本没有看到我正在安装的内容。

在CentOS 7中,/usr/bin文件夹中已经存在python2.7和pip2.7。要为你的新python发行版安装pip,你需要专门告诉sudo转到/usr/local/bin

sudo /usr/local/bin/python2.7 -m ensurepip

这应该在您的/usr/local/bin文件夹中安装pip2.7以及您的python版本。诀窍是,当您要安装模块时,您需要修改sudo $PATH变量以包含/usr/local/bin或者您需要执行

sudo /usr/local/bin/pip2.7 install <module>

如果要安装新模块。我永远记得sudo没有立即看到/usr/local/bin

答案 12 :(得分:0)

例如,如果您将其他版本(例如3.5)设置为默认值并想要为python 2.7安装pip:

  1. https://pypi.python.org/pypi/pip(焦油)
  2. 下载点子
  3. 解压缩tar文件
  4. cd到文件目录
  5. sudo python2.7 setup.py install

答案 13 :(得分:0)

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

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

答案 14 :(得分:0)

上下文:Archlinux

操作:
安装python2-pip:
sudo pacman -S python2-pip

你现在有了pip2.7:
sudo pip2.7 install boto

测试(在我的情况下,我需要&#39; boto&#39;):
运行以下命令:

python2
import boto

成功:没有错误。

退出: Ctrl + D

答案 15 :(得分:0)

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

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

步骤如下:

  1. 如果您以其他方式安装了多个额外的python版本,请删除它们,例如,删除 $ HOME / .local / lib / python3.x 等。全球安装的)。不要触摸系统的默认python3版本。

  2. 在以下目录结构下下载不同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/
          ...
    
  3. 在每个“Python-3.x.y /”目录中,执行以下操作(在任何步骤中执行 NOT 使用“sudo”!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
    
  4. 在“python_versions /”中创建如下文件:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
    
  5. 现在,只要您想选择python3.x,请执行

    source $HOME/python_versions/env_python3x.bash
    

    进入virtualenv

  6. 在virtualenv中,使用

    安装您喜欢的python包
    pip install --upgrade package_name
    
  7. 要退出virtualenv和python版本,只需输入“deactivate”

答案 16 :(得分:0)

这可能是完全错误的操作(我是python noob),但我只是进去编辑了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())

答案 17 :(得分:0)

安装多个版本的Python和相应的软件包。

同一Windows机器上的Python版本:2.7,3.4和3.6

安装所有3个版本的Python

  • 使用以下路径安装了python 2.7,3.4和3.6

enter image description here

所有三个版本的Python的

PATH

  • 确保PATH变量(在System Variables中)具有以下包含的路径-C:\ Python27 \; C:\ Python27 \ Scripts; C:\ Python34 \; C:\ Python34 \ Scripts; C:\ Python36 \; C:\ Python36 \ Scripts \;

重命名可执行文件的版本

  • 将C:\ Python36和C:\ Python34中的python可执行文件名称分别更改为python36和python34。

enter image description here

检查了所有版本的命令提示符:

enter image description here

为每个版本分别安装软件包

enter image description here

答案 18 :(得分:0)

专门针对Windows: \ path \ to \ python.exe -m pip install PackageName 有效。

答案 19 :(得分:0)

如果您有多个版本以及多个体系结构(32位,64位),则需要在版本末尾添加-32或-64。

对于Windows,请转到cmd并键入py --list,它将生成您已安装的版本。该列表将如下所示:

Tesla

以完整命令为例:

Installed Pythons found by py Launcher for Windows
 -3.7-64 *
 -3.7-32
 -3.6-32

如果想更深入,要在特定版本的python上安装特定版本的软件包,请在该软件包之后使用==(version)。例如,

py -3.6-32 -m pip install (package)

答案 20 :(得分:0)

对于Blender:

/usr/bin $ python3.7 -m pip install irc

答案 21 :(得分:0)

如果您同时安装了python3.6python3.7,并且想在默认情况下将pippython3.7一起使用,则应该这样做:

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

python3.7 -m pip install -U pip

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

nano ~/.bashrc

向其添加以下行

alias pip=pip3.7

为了使更改生效,请在外壳中输入:

source ~/.bashrc

现在,如果您输入:

pip --version

您应该得到:

/usr/local/lib/python3.7/dist-packages/pip(python 3.7)中的pip 20.1.1

这表示(例如,如果使用):

pip install <package>

它将为<package>安装python3.7

答案 22 :(得分:0)

另一种可能的方法是使用conda和pip。有时您可能只想使用其中之一,但是如果您确实需要设置特定版本的python,可以将两者结合使用。

  1. 我用我想要的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

  2. 然后使用所需的python激活您的环境。该命令可能会因操作系统而异。

    source activae myenv

  3. 现在您已启用python,则可以继续使用conda,但是如果您需要/想要使用pip:

    python -m pip -r requirements.txt

这里您有办法。

答案 23 :(得分:0)

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

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

答案 24 :(得分:0)

对于 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”< /strong>

-m :只是因为或为了修改

pip install urllib3:普通的pip命令