Lidando com várias versões do Python e PIP?

500

Existe alguma maneira de pipjogar bem com várias versões do Python? Por exemplo, eu quero usar pippara instalar explicitamente coisas na instalação do meu site 2.5 ou do meu site 2.6.

Por exemplo, com easy_install, eu uso easy_install-2.{5,6}.

E sim - eu sei sobre virtualenv e não - não é uma solução para esse problema em particular.

David Wolever
fonte
1
@YiboYang funciona com coisas como pip34e pip35?
JinSnow 03/04/19
2
@ JinSnow Deveria, desde que pip3.xna verdade gere a versão python na qual você deseja instalar os pacotes (talvez execute pip3.x -Vpara ver). Ou use a solução da @ Hugo para ter um melhor controle sobre várias versões de python.
Yibo Yang
Possível duplicata do stackoverflow.com/questions/10919569/… #
Mike D3ViD Tyson

Respostas:

625

A recomendação atual é usar python -m pip, onde pythonestá a versão do Python que você gostaria de usar. Essa é a recomendação, pois funciona em todas as versões do Python e em todas as formas de virtualenv. Por exemplo:

# 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

Resposta anterior, deixada para a posteridade:

Desde a versão 0.8, o Pip suporta pip-{version}. Você pode usá-lo da mesma forma que easy_install-{version}:

$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage

EDIT : pip mudou seu esquema para usar em pipVERSIONvez de pip-VERSIONna versão 1.5. Você deve usar o seguinte se tiver pip >= 1.5:

$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage

Verifique https://github.com/pypa/pip/pull/1053 para obter mais detalhes


Referências:

Hugo Tavares
fonte
12
Não funciona Embora a versão mais recente do pip tenha instalado um script pip-2.6, ela não se preocupou em instalar um script pip-2.5.
22311 Chris
2
Você precisa atualizar sua versão do python2.5 pip ... Ele só cria o pip- {PYVERSION} no python que você está usando.
Hugo Tavares
4
Isto está incorreto. Estou executando o pip 1.2.1 com Python2.7 no Ubuntu e não há versões alternativas do pip.
Cerin
2
@rodling: provavelmente você não instalou pipvia pip/ easy_installou get-pip.pyou você não tem python2.7. se você tem python2.7, tente: pip install --upgrade pipe você deve ter pipepip-2.7
Hugo Tavares
2
@JCRocamonde: o programa pipé escolhido com base na variável de ambiente $ PATH. Se você deseja alterar o que é o programa pip "padrão", reordene a variável de ambiente $ PATH. Procure algo como "path environment variable linux" para obter mais detalhes sobre $ PATH.
Hugo Tavares
117

No Windows, você pode executar o módulo pip usando uma determinada versão Python através do Python lançador , py.exe, se você escolheu para instalá-lo durante a instalação do Python 3.

py -3 -m pip install packagename
py -2 -m pip install packagename

Você pode ser ainda mais específico e solicitar uma sub-versão exata do Python:

py -3.6 -m pip install packagename

Para obter uma lista de todas as versões instaladas do Python disponíveis no iniciador, execute:

py --list

Como alternativa, você pode iniciar o executável Python desejado diretamente:

C:/path/to/specific/python.exe -m pip install packagename
Mounica T
fonte
11
tendo ambos 2.7 e 3.5 instalado no Windows, isso funcionou imediatamente
phil_lgr
1
Não há nenhuma maneira de ter python2, python3, pip2e pip3no Windows?
Thomthom 21/08/19
1
isso funcionou para mim no windows. tinha 3 instalado e depois instalado 2
daneshjai 17/08/18
1
Obrigado, isso funcionou para mim! Não posso acreditar como foi difícil. (Nenhum destes ou variações python3.7 -m pip instalar ou python3.7 -m pip instalar ou python3.7 -m pip instalação funcionou para mim ...)
jeppoo1
75

/path/to/python2.{5,6} /path/to/pip install PackageName não funciona?

Para que isso funcione em qualquer versão python que ainda não tenha o pip instalado, você precisa fazer o download do pip e fazer python*version* setup.py install. Por exemplo python3.3 setup.py install. Isso resolve o erro de importação nos comentários. (Como sugerido por @hbdgaf)

bwinton
fonte
4
Para que isso funcione, digamos, python 3, você precisa baixar o pip e fazer "python3 setup.py install". Pessoalmente, acho que essa solução não é muito boa. Para começar, eu nem sabia que o comando pip não era um binário. Isso não é uma crítica ao @bwinton, estou surpreso por não haver uma maneira melhor de fazer isso.
Mike Vella
28
"ImportError: nenhum módulo chamado pkg_resources"
Cerin
3
Estou confuso que o problema com o importador tenha mais problemas do que a solução para o mesmo comentário acima.
precisa saber é o seguinte
1
Além disso, / path / to / pip é esta: python2 {5,6} / Scripts / PIP2 {5,6}..
raul
2
Para chamar um módulo de python, você deve usarpython2.7 -m pip install PackageName
llrs 22/02
52

Eu tinha o python 2.6 instalado por padrão (Amazon EC2 AMI), mas precisava do python2.7 mais alguns pacotes externos para o meu aplicativo. Supondo que você já instalou o python2.7 junto com o python padrão (2.6 no meu caso). Aqui está como instalar pip e pacotes para python2.7 não padrão

Instale o pip para sua versão python:

curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py

Use uma versão específica do pip para instalar pacotes:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python
Oleg
fonte
2
grande funcionou para mim para Python 3.4 com seguinte: python3 get-pip.pye mais tarde usando o comando pip compip34 install example
Karl Adler
Obrigado. Muito útil. Testado em dois servidores diferentes.
user2099484
3
Isso funcionou quando usei 'get-pip.py python2.7' em vez de 'python27 get-pip.py'
SummerEla
Homem que parecia superficial, mas funcionou para mim instalando o pip2.6 no Centos 5. #
Aaron R.
Got Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipquando eu tenteipython2.6 get-pip.py
Pyderman
29

Funcionou para mim no Windows desta maneira:

  1. Alterei o nome dos arquivos python python.py e pythonw.exe para python3.py pythonw3.py

  2. Então eu apenas executei este comando no prompt:

    python3 -m pip install package

Angie Alejo
fonte
4
Para qualquer pessoa que descubra como instalar pacotes no python3 usando pip no mac, este comando é como você instala pacotes. Passei horas pesquisando e finalmente o encontrei!
sidney
25

Outras respostas mostram como usar o pip no Python 2.X e 3.X, mas não mostram como lidar com o caso de várias distribuições Python (por exemplo, Python original e Anaconda Python) .

Eu tenho um total de 3 versões do Python: Python original 2.7 e Python 3.5 e Anaconda Python 3.5.

Aqui está como eu instalo um pacote em:

  1. Python original 3.5 :

    /usr/bin/python3 -m pip install python-daemon
  2. Python original 2.7 :

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

    python3 -m pip install python-daemon

    ou

    pip3 install python-daemon

    Mais simples, pois o Anaconda substitui os binários Python originais no ambiente do usuário.

    Obviamente, a instalação no anaconda deve ser feita com o condacomando, este é apenas um exemplo.


Além disso, verifique se o pip está instalado para esse python específico. Talvez seja necessário instalar o pip manualmente. Isso funciona no Ubuntu 16.04:

sudo apt-get install python-pip 

ou

sudo apt-get install python3-pip
quase
fonte
Os conselhos sobre o Anaconda aqui não são precisos ... não "substituem" nada. O fato de ele estar escolhendo a versão do Anaconda como padrão no seu sistema é simplesmente um efeito colateral da sua configuração específica, como você instalou cada intérprete e a ordem do caminho do seu ambiente ... esses variam para outros.
Corey Goldberg
@CoreyGoldberg Concordo, era o padrão na minha instalação do Ubuntu 16.04
quasoft 23/02
1
Você senhor, é o homem. De todas as explicações totalmente inúteis que cercam esse problema, essa é a única que fez sentido para mim. Hora de usar o apelido desses comandos e seguir com minha vida! OBRIGADO.
Iofacture 18/03/19
14

Eu me deparei com esse problema recentemente e descobri que não estava obtendo o pip certo para o Python 3, no meu sistema Linux que também possui o Python 2.

Primeiro, você deve garantir que instalou o pip para sua versão python:

Para Python 2:

sudo apt-get install python-pip

Para Python 3:

sudo apt-get install python3-pip

Em seguida, para instalar pacotes para uma versão do Python ou outra, basta usar o seguinte para o Python 2:

pip install <package>

ou para Python 3:

pip3 install <package>
clyde
fonte
11

pip também é um pacote python. Portanto, a maneira mais fácil de instalar módulos em uma versão python específica seria abaixo

 python2.7 /usr/bin/pip install foo

ou

python2.7 -m pip install foo
Prakash Palnati
fonte
10

Então, aparentemente, existem várias versões de easy_install e pip . Parece ser uma grande bagunça. Enfim, foi o que fiz para instalar o Django para Python 2.7 no Ubuntu 12.10:

$ 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
>>> 
Timmmm
fonte
8

A partir daqui: https://docs.python.org/3/installing/

Aqui está como instalar pacotes para várias versões instaladas ao mesmo tempo 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

No Windows , use o iniciador py Python em combinação com a opção -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
jmunsch
fonte
Considere também verificar: pipenv
jmunsch 12/12/19
7

No Linux, Mac OS X e outros sistemas POSIX, use os comandos Python com versão em combinação com o -mswitch para executar a cópia apropriada de pip:

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

(comandos pip com versão apropriada também podem estar disponíveis)

No Windows, use o pyiniciador Python em combinação com a -mopção:

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

se você receber um erro py -3.4, tente:

pip install SomePackage
Saurabh Tripathi
fonte
5

Instalação de várias versões do Python e respectivos pacotes.

Versão Python na mesma máquina Windows: 2.7, 3.4 e 3.6

Instalação das 3 versões do Python :

  • Instalou o Python 2.7, 3.4 e 3.6 com os caminhos abaixo

insira a descrição da imagem aqui

PATH para todas as 3 versões do Python :

  • Verifique se a variável PATH (em Variáveis ​​do sistema) possui os caminhos abaixo - C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Renomeando os executáveis ​​para versões :

  • O nome do executável python foi alterado em C: \ Python36 e C: \ Python34 para python36 e python34, respectivamente.

insira a descrição da imagem aqui

Verificado o prompt de comando com todas as versões:

insira a descrição da imagem aqui

Instalando os pacotes separadamente para cada versão

insira a descrição da imagem aqui

Bahubali Patil
fonte
Obrigado !!! Esta é a melhor maneira
rakshit ks
4

Se você possui várias versões e arquiteturas (32 bits, 64 bits), será necessário adicionar -32 ou -64 no final da sua versão.

Para o Windows, vá para cmd e digite py --list e ele produzirá as versões que você instalou. A lista terá a seguinte aparência:

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

O comando completo como exemplo será:

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

Se você deseja obter mais informações, para instalar uma versão específica de um pacote em uma versão específica do python, use == (version) após o pacote. Como um exemplo,

py -3.6-32 -m pip install opencv-python==4.1.0.25
Brad M
fonte
2

A maioria das respostas aqui aborda o problema, mas quero acrescentar algo que estava constantemente me confundindo com relação à criação de uma instalação alternativa de python no /usr/localCentOS 7. Quando eu instalei lá, parecia que o pip estava funcionando, pois eu poderia usar pip2.7 installe instalaria módulos. No entanto, o que eu não conseguia descobrir era por que minha versão recém-instalada do python não estava vendo o que eu estava instalando.

Acontece no CentOS 7 que já existe um python2.7 e um pip2.7 na /usr/binpasta. Para instalar o pip para sua nova distribuição python, você precisa dizer especificamente ao sudo para ir para/usr/local/bin

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

Isso deve ter o pip2.7 instalado na sua /usr/local/binpasta junto com a sua versão do python. O truque é que, quando você deseja instalar os módulos, você precisa modificar a $PATHvariável sudo para incluir /usr/local/binou executar

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

se você deseja instalar um novo módulo. Levei uma eternidade para lembrar que sudonão estava vendo imediatamente /usr/local/bin.

JeffP
fonte
2

Aqui está a minha opinião sobre o problema. Funciona para Python3. As principais características são:

  • Cada versão do Python é compilada a partir da fonte
  • Todas as versões são instaladas localmente
  • Não altera a instalação padrão do Python do seu sistema de forma alguma
  • Cada versão do Python é isolada com virtualenv

Os passos são os seguintes:

  1. Se você tiver várias versões python extras instaladas de alguma outra maneira, livre-se delas, por exemplo, remova $ HOME / .local / lib / python3.x , etc. (também as instaladas globalmente). Não toque na versão python3 padrão do seu sistema.

  2. Faça o download do código-fonte para diferentes versões do python na seguinte estrutura de diretórios:

    $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. Em cada diretório "Python-3.xy /", faça o seguinte ( NÃO use "sudo" em nenhuma das etapas!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. Em "python_versions /", crie arquivos como este:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Agora, sempre que desejar optar pelo python3.x, faça

    source $HOME/python_versions/env_python3x.bash

    para entrar no virtualenv

  6. Enquanto estiver no virtualenv, instale seus pacotes python favoritos com

    pip install --upgrade package_name
  7. Para sair da versão virtualenv e python, digite "deactivate"

ATUALIZAR

Parece que --no-site-packagesestá obsoleto. Existe uma solução fácil para isso: depois de ativar o virtualenv, basta apontar a variável env para outro local que não seja o diretório pessoal atual, ou seja:

export HOME=some/where/else

Uma boa maneira de fazer isso em geral é:

  • Criar virtualenv
  • Ativar virtualenv
  • Se você deseja "reciclar" as bibliotecas existentes para o seu virtualenv, vincule-as a partir da instalação existente, ou seja, ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Do export PYTHONPATH=,export HOME=/some/other/dir

Agora você deve ter virtualenv isolado personalizado.

El Sampsa
fonte
0

Contexto: Archlinux

Ação:
Instale python2-pip:
sudo pacman -S python2-pip

Agora você tem o pip2.7:
sudo pip2.7 install boto

Teste (no meu caso, eu precisava do 'boto'):
Execute os seguintes comandos:

python2
import boto

Sucesso: nenhum erro.

Sair: Ctrl+D

Paul Parker
fonte
0

por exemplo, se você definir outras versões (por exemplo, 3.5) como padrão e desejar instalar o pip para python 2.7:

  1. faça o download do pip em https://pypi.python.org/pypi/pip (tar)
  2. descompacte o arquivo tar
  3. cd para o diretório do arquivo
  4. Instalação do sudo python2.7 setup.py
salomeow
fonte
0

Você pode ir para, por exemplo, C: \ Python2.7 \ Scripts e, em seguida, executar o cmd a partir desse caminho. Depois disso, você pode executar o pip2.7 instalar o seu pacote ...

Isso instalará o pacote para essa versão do Python.

thug_
fonte
0

Esta é provavelmente a coisa completamente errada a fazer (eu sou um noob python), mas eu apenas entrei e editei o arquivo 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())
Jerinaw
fonte
0

Para o Windows especificamente: \ path \ to \ python.exe -m pip install PackageName funciona.

Aaquila
fonte
0

para o Blender:

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