Hai a che fare con più versioni di Python e PIP?


501

C'è un modo per pipgiocare bene con più versioni di Python? Ad esempio, voglio usare pipper installare esplicitamente cose sull'installazione del mio sito 2.5 o sul mio sito 2.6.

Ad esempio, con easy_install, io uso easy_install-2.{5,6}.

E sì - lo so di virtualenv, e no - non è una soluzione a questo particolare problema.


1
@YiboYang funziona con cose come pip34e pip35?
JinSnow

2
@JinSnow Dovrebbe, a condizione pip3.xche gestisca effettivamente la versione di Python in cui si desidera installare i pacchetti (forse eseguire pip3.x -Vper vedere). Oppure usa la soluzione di @ Hugo per avere un migliore controllo su molte versioni di Python.
Yibo Yang,

Risposte:


627

La raccomandazione attuale è di usare python -m pip, dov'è pythonla versione di Python che vorresti usare. Questa è la raccomandazione perché funziona su tutte le versioni di Python e in tutte le forme di virtualenv. Per esempio:

# 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

Risposta precedente, lasciata ai posteri:

Dalla versione 0.8, Pip supporta pip-{version}. Puoi usarlo come easy_install-{version}:

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

EDIT : pip ha cambiato il suo schema da utilizzare pipVERSIONanziché pip-VERSIONnella versione 1.5. È necessario utilizzare quanto segue se si dispone di pip >= 1.5:

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

Controlla https://github.com/pypa/pip/pull/1053 per maggiori dettagli


Riferimenti:


12
Non funziona Sebbene l'ultima versione di pip abbia installato uno script pip-2.6, non si è preoccupato di installare uno script pip-2.5.
Chris B.

2
Devi aggiornare la tua versione pip di python2.5 ... Crea solo pip- {PYVERSION} sotto il python che stai usando pip.
Hugo Tavares,

4
Questo non è corretto Sto eseguendo pip 1.2.1 con Python2.7 su Ubuntu e non ci sono versioni pip alternative.
Cerin,

2
@rodling: probabilmente non hai installato piptramite pip/ easy_installo get-pip.pyo non hai python2.7. se hai python2.7, prova: pip install --upgrade pipe dovresti avere pipepip-2.7
Hugo Tavares il

2
@JCRocamonde: il programma pipviene scelto in base alla variabile d'ambiente $ PATH. Se si desidera modificare il programma pip "predefinito", riordinare la variabile di ambiente $ PATH. Cerca qualcosa come "path environment variabile linux" per maggiori dettagli su $ PATH.
Hugo Tavares,

117

In Windows, è possibile eseguire il modulo PIP utilizzando una determinata versione di Python attraverso il Python launcher , py.exese si sceglie di installare durante l'installazione Python 3.

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

Puoi essere ancora più specifico e richiedere una sotto-versione esatta di Python:

py -3.6 -m pip install packagename

Per ottenere un elenco di tutte le versioni di Python installate disponibili tramite il programma di avvio, eseguire:

py --list

In alternativa, puoi avviare direttamente l'eseguibile Python desiderato:

C:/path/to/specific/python.exe -m pip install packagename

11
avendo installato 2.7 e 3.5 su Windows, ha funzionato subito
phil_lgr

1
Non c'è modo di avere python2, python3, pip2e pip3su Windows?
Thom

1
questo ha funzionato per me su Windows. aveva installato 3 e quindi installato 2
daneshjai il

1
Grazie, ha funzionato per me! Non riesco a credere quanto sia stato difficile. (Nessuna di queste o varianti python-3.7 -m pip install o python-3.7 -m pip install o python3.7 -m pip install ha funzionato per me ...)
jeppoo1

75

/path/to/python2.{5,6} /path/to/pip install PackageName non funziona?

Affinché funzioni su qualsiasi versione di Python che non ha già installato pip, è necessario scaricare pip e fare python*version* setup.py install. Per esempio python3.3 setup.py install. Questo risolve l'errore di importazione nei commenti. (Come suggerito da @hbdgaf)


4
Perché questo funzioni su dire python 3 è necessario scaricare pip ed eseguire "python3 setup.py install". Personalmente trovo che questa soluzione non sia molto bella. Tanto per cominciare non sapevo nemmeno che il comando pip non fosse un file binario. Questa non è una critica a @bwinton, sono solo sorpresa che non ci sia un modo migliore per farlo.
Mike Vella,

28
"ImportError: nessun modulo chiamato pkg_resources"
Cerin

3
Sono sconcertato dal fatto che il problema con l'importrorror abbia avuto più vantaggi della soluzione allo stesso commento sopra di esso.
RobotHumans

1
Inoltre, / path / to / pip è questo: python2. {5,6} / Scripts / pip2. {5,6}
raul

2
Per chiamare un modulo di pitone si dovrebbe usarepython2.7 -m pip install PackageName
LLR

52

Avevo installato python 2.6 per impostazione predefinita (Amazon EC2 AMI), ma avevo bisogno di python2.7 oltre ad alcuni pacchetti esterni per la mia applicazione. Supponendo che tu abbia già installato Python2.7 insieme a Python predefinito (2.6 nel mio caso). Ecco come installare pip e pacchetti per python2.7 non predefinito

Installa pip per la tua versione di Python:

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

Utilizzare una versione pip specifica per installare i pacchetti:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python

2
great ha funzionato per me per Python 3.4 con il seguente: python3 get-pip.pye successivamente usando il comando pip conpip34 install example
Karl Adler

Grazie. Molto utile. Testato su due server diversi.
user2099484,

3
Questo ha funzionato quando ho usato 'python2.7 get-pip.py' invece di 'python27 get-pip.py'
SummerEla

Uomo che sembrava impreciso ma ha funzionato per me installando pip2.6 su Centos 5.
Aaron R.

Capito Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipquando ci ho provatopython2.6 get-pip.py
Pyderman

29

Ha funzionato per me in Windows in questo modo:

  1. Ho cambiato il nome dei file python python.py e pythonw.exe in python3.py pythonw3.py

  2. Quindi ho appena eseguito questo comando nel prompt:

    python3 -m pip install package


4
Solo per chiunque abbia capito come installare i pacchetti in python3 usando pip su mac, questo comando è come installare i pacchetti. Ho passato ore a cercare e finalmente l'ho trovato!
Sidney,

25

Altre risposte mostrano come usare pip con Python sia 2.X sia 3.X, ma non mostrano come gestire il caso di più distribuzioni Python (es. Python originale e Anaconda Python) .

Ho un totale di 3 versioni di Python: originali Python 2.7 e Python 3.5 e Anaconda Python 3.5.

Ecco come installo un pacchetto in:

  1. Python originale 3.5 :

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

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

    python3 -m pip install python-daemon

    o

    pip3 install python-daemon

    Più semplice, poiché Anaconda sostituisce i binari Python originali nell'ambiente utente.

    Naturalmente, l'installazione in anaconda dovrebbe essere fatta con condacomando, questo è solo un esempio.


Inoltre, assicurati che pip sia installato per quel python specifico. Potrebbe essere necessario installare pip manualmente. Funziona con Ubuntu 16.04:

sudo apt-get install python-pip 

o

sudo apt-get install python3-pip

I consigli su Anaconda qui non sono accurati ... non "annullano" nulla. Il fatto che stia raccogliendo la versione Anaconda come predefinita sul tuo sistema è semplicemente un effetto collaterale della tua configurazione specifica, del modo in cui hai installato ciascun interprete e dell'ordinamento del percorso del tuo ambiente .... quelli varieranno per gli altri.
Corey Goldberg,

@CoreyGoldberg Sono d'accordo, era il valore predefinito sulla mia installazione di Ubuntu 16.04
quasoft

1
Signore, siete l'uomo. Di tutte le spiegazioni totalmente inutili che circondano questo problema, questa è l'unica che ha avuto senso per me. È ora di aliasare questi comandi e andare avanti con la mia vita! GRAZIE.
Iofacture il

14

Mi sono imbattuto in questo problema di recente e ho scoperto che non stavo ottenendo il pip giusto per Python 3, sul mio sistema Linux che ha anche Python 2.

Per prima cosa devi assicurarti di aver installato pip per la tua versione di Python:

Per Python 2:

sudo apt-get install python-pip

Per Python 3:

sudo apt-get install python3-pip

Quindi per installare i pacchetti per una versione di Python o per l'altra, utilizzare semplicemente quanto segue per Python 2:

pip install <package>

o per Python 3:

pip3 install <package>

11

pip è anche un pacchetto python. Quindi il modo più semplice per installare i moduli su una specifica versione di Python sarebbe di seguito

 python2.7 /usr/bin/pip install foo

o

python2.7 -m pip install foo

10

Quindi apparentemente ci sono più versioni di easy_install e pip . Sembra essere un gran casino. Comunque, questo è quello che ho fatto per installare Django per Python 2.7 su 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
>>> 

8

Da qui: https://docs.python.org/3/installing/

Ecco come installare i pacchetti per varie versioni che sono installate contemporaneamente 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

Su Windows , usa il programma di avvio Py Py in combinazione con l'opzione -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

Considera anche di pipenv
provare

7

Su Linux, Mac OS X e altri sistemi POSIX, utilizzare i comandi Python con versione in combinazione con lo -mswitch per eseguire la copia appropriata di pip:

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

(potrebbero essere disponibili anche comandi pip con una versione appropriata)

Su Windows, utilizzare il pylauncher Python in combinazione con l' -mopzione:

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

se ricevi un errore per py -3.4allora prova:

pip install SomePackage

5

Installazione di più versioni di Python e rispettivi pacchetti.

Versione Python sulla stessa macchina Windows: 2.7, 3.4 e 3.6

Installazione di tutte e 3 le versioni di Python :

  • Installato Python 2.7, 3.4 e 3.6 con i percorsi seguenti

inserisci qui la descrizione dell'immagine

PERCORSO per tutte e 3 le versioni di Python :

  • Assicurati che la variabile PATH (nelle variabili di sistema) abbia i seguenti percorsi inclusi: C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Rinominare gli eseguibili per le versioni :

  • Modificato il nome dell'eseguibile python in C: \ Python36 e C: \ Python34 rispettivamente in python36 e python34.

inserisci qui la descrizione dell'immagine

Controllato per il prompt dei comandi con tutte le versioni:

inserisci qui la descrizione dell'immagine

Installazione dei pacchetti separatamente per ogni versione

inserisci qui la descrizione dell'immagine


Grazie !!! Questo è il modo migliore
rakshit ks

4

Se si dispone di più versioni e più architetture (32 bit, 64 bit) sarà necessario aggiungere un -32 o -64 alla fine della versione.

Per Windows, vai su cmd e digita py --list e produrrà le versioni che hai installato. L'elenco sarà simile al seguente:

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

Il comando completo come esempio sarà:

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

Se vuoi ottenere più approfondimenti, per installare una versione specifica di un pacchetto su una versione specifica di Python, usa == (versione) dopo il pacchetto. Come esempio,

py -3.6-32 -m pip install opencv-python==4.1.0.25

2

La maggior parte delle risposte qui risolve il problema, ma voglio aggiungere qualcosa che mi ha continuamente confuso riguardo alla creazione di un'installazione alternativa di Python /usr/localsu CentOS 7. Quando ho installato lì, sembrava che pip funzionasse poiché potevo usarepip2.7 install e installerebbe i moduli. Tuttavia, ciò che non riuscivo a capire era il motivo per cui la mia versione di Python appena installata non vedeva ciò che stavo installando.

Si scopre che in CentOS 7 esiste già un python2.7 e un pip2.7 nella /usr/bincartella. Per installare pip per la tua nuova distribuzione Python, devi dire specificamente a sudo di andare a/usr/local/bin

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

Questo dovrebbe far installare pip2.7 nella tua /usr/local/bincartella insieme alla tua versione di Python. Il trucco è che quando si desidera installare i moduli, è necessario modificare la $PATHvariabile sudo da includere /usr/local/bino eseguire

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

se vuoi installare un nuovo modulo. Mi ci è voluto un'eternità per ricordare che sudonon si vedeva immediatamente /usr/local/bin.


2

Ecco la mia opinione sul problema. Funziona per Python3. Le caratteristiche principali sono:

  • Ogni versione di Python è compilata dal sorgente
  • Tutte le versioni sono installate localmente
  • Non altera in alcun modo l'installazione Python predefinita del sistema
  • Ogni versione di Python è isolata con virtualenv

I passi sono come segue:

  1. Se hai installato diverse versioni di Python in qualche altro modo, eliminale , ad esempio rimuovi $ HOME / .local / lib / python3.x , ecc. (Anche quelle installate a livello globale). Tuttavia, non toccare la versione predefinita di Python3 del sistema.

  2. Scarica l'origine per diverse versioni di Python nella seguente struttura di directory:

    $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. In ogni directory "Python-3.xy /", procedi come segue ( NON utilizzare "sudo" in nessuno dei passaggi!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. In "python_versions /" creare file come questo:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Ora, ogni volta che desideri optare per python3.x, fallo

    source $HOME/python_versions/env_python3x.bash

    per inserire virtualenv

  6. Mentre sei in virtualenv, installa i tuoi pacchetti python preferiti con

    pip install --upgrade package_name
  7. Per uscire dalla versione di virtualenv e python basta digitare "disattivare"

AGGIORNARE

Sembra che --no-site-packagessia deprecato. C'è una soluzione semplice per questo: una volta attivato virtualenv, basta puntare la variabile env HOME su un altro punto rispetto alla directory home effettiva, ovvero:

export HOME=some/where/else

Un buon modo per farlo in generale è:

  • Crea virtualenv
  • Attiva virtualenv
  • Se si desidera "riciclare" le librerie esistenti su virtualenv, collegarle tramite softlink dall'installazione esistente, ad es ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Fare export PYTHONPATH=,export HOME=/some/other/dir

Ora dovresti avere virtualenv isolato su misura.


0

Contesto: Archlinux

Azione:
installare python2-pip:
sudo pacman -S python2-pip

Ora hai pip2.7:
sudo pip2.7 install boto

Test (nel mio caso avevo bisogno di 'boto'):
esegui i seguenti comandi:

python2
import boto

Operazione riuscita: nessun errore.

Uscita: Ctrl+D


0

ad esempio, se si impostano altre versioni (ad es. 3.5) come predefinite e si desidera installare pip per Python 2.7:

  1. scarica pip a https://pypi.python.org/pypi/pip (tar)
  2. decomprimere il file tar
  3. cd nella directory del file
  4. sudo python2.7 setup.py install

0

Puoi andare ad esempio a C: \ Python2.7 \ Scripts e quindi eseguire cmd da quel percorso. Dopodiché puoi eseguire pip2.7 installare il pacchetto ...

Questo installerà il pacchetto per quella versione di Python.


0

Questa è probabilmente la cosa completamente sbagliata da fare (sono un pitone), ma sono appena entrato e ho modificato il file 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())

0

In particolare per Windows: \ path \ to \ python.exe -m pip install PackageName funziona.


0

per Blender:

/usr/bin $ python3.7 -m pip install irc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.