Umgang mit mehreren Python-Versionen und PIP?


499

Gibt es eine Möglichkeit, pipmit mehreren Versionen von Python gut zu spielen? Zum Beispiel möchte ich verwenden pip, um Dinge explizit entweder auf meiner Site 2.5-Installation oder auf meiner Site 2.6-Installation zu installieren.

Zum Beispiel mit easy_installbenutze ich easy_install-2.{5,6}.

Und ja - ich weiß über virtualenv Bescheid und nein - es ist keine Lösung für dieses spezielle Problem.


1
@ YiboYang funktioniert es mit Dingen wie pip34und pip35?
JinSnow

2
@ JinSnow Es sollte, vorausgesetzt, pip3.xverwaltet tatsächlich die Python-Version, auf der Sie Pakete installieren möchten (möglicherweise ausführen, um pip3.x -Vzu sehen). Oder verwenden Sie die Lösung von @ Hugo, um viele Python-Versionen besser steuern zu können.
Yibo Yang

Antworten:


625

Die aktuelle Empfehlung lautet python -m pip: Wo pythonist die Version von Python, die Sie verwenden möchten? Dies ist die Empfehlung, da es in allen Versionen von Python und in allen Formen von virtualenv funktioniert. Zum Beispiel:

# 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

Vorherige Antwort, links für die Nachwelt:

Seit Version 0.8 unterstützt Pip pip-{version}. Sie können es genauso verwenden wie easy_install-{version}:

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

BEARBEITEN : pip hat sein Schema geändert, um es pipVERSIONanstelle von pip-VERSIONVersion 1.5 zu verwenden. Sie sollten Folgendes verwenden, wenn Sie haben pip >= 1.5:

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

Weitere Informationen finden Sie unter https://github.com/pypa/pip/pull/1053


Verweise:


12
Funktioniert nicht Obwohl die neueste Version von pip ein pip-2.6-Skript installiert hat, hat es sich nicht die Mühe gemacht, ein pip-2.5-Skript zu installieren.
Chris B.

2
Sie müssen Ihre python2.5-Pip-Version aktualisieren ... Es wird nur pip- {PYVERSION} unter dem Python erstellt, das Sie pip verwenden.
Hugo Tavares

4
Das ist falsch. Ich verwende Pip 1.2.1 mit Python2.7 unter Ubuntu und es gibt keine alternativen Pip-Versionen.
Cerin

2
@rodling: wahrscheinlich hast du nicht pipüber pip/ easy_installoder installiert get-pip.pyoder du hast python2.7 nicht. Wenn Sie Python 2.7 haben, versuchen Sie: pip install --upgrade pipund Sie sollten pipundpip-2.7
Hugo Tavares

2
@JCRocamonde: Das Programm pipwird basierend auf der Umgebungsvariablen $ PATH ausgewählt. Wenn Sie das "Standard" -Pip-Programm ändern möchten, ordnen Sie die Umgebungsvariable $ PATH neu an. Suchen Sie nach "Pfadumgebungsvariable Linux", um weitere Informationen zu $ ​​PATH zu erhalten.
Hugo Tavares

117

Unter Windows können Sie den Pip - Modul einen bestimmten Python - Version durch die Verwendung ausführen Python Launcher , py.exewenn Sie es während Python 3 Setup installieren möchten.

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

Sie können noch genauer sein und eine genaue Unterversion von Python anfordern:

py -3.6 -m pip install packagename

Führen Sie Folgendes aus, um eine Liste aller installierten Python-Versionen zu erhalten, die über den Launcher verfügbar sind:

py --list

Alternativ können Sie die gewünschte ausführbare Python-Datei direkt starten:

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

11
Nachdem sowohl 2.7 als auch 3.5 unter Windows installiert waren, funktionierte dies sofort
phil_lgr

1
Gibt es keine Möglichkeit haben python2, python3, pip2und pip3auf Windows?
Thomthom

1
Das hat bei mir unter Windows funktioniert. hatte 3 installiert und dann installiert 2
Daneshjai

1
Danke, das hat bei mir funktioniert! Ich kann nicht glauben, wie schwierig es war. (Keine dieser oder Variationen python-3.7 -m pip install oder python-3.7 -m pip install oder python3.7 -m pip install hat bei mir funktioniert ...)
jeppoo1

75

/path/to/python2.{5,6} /path/to/pip install PackageName funktioniert nicht?

Damit dies auf jeder Python-Version funktioniert, auf der pip noch nicht installiert ist, müssen Sie pip and do herunterladen python*version* setup.py install. Zum Beispiel python3.3 setup.py install. Dies behebt den Importfehler in den Kommentaren. (Wie von @hbdgaf vorgeschlagen)


4
Damit dies beispielsweise bei Python 3 funktioniert, müssen Sie pip herunterladen und "python3 setup.py install" ausführen. Persönlich finde ich diese Lösung nicht sehr schön. Zunächst wusste ich nicht einmal, dass der Befehl pip keine Binärdatei ist. Dies ist keine Kritik an @bwinton. Ich bin nur überrascht, dass es keinen besseren Weg gibt, dies zu tun.
Mike Vella

28
"ImportError: Kein Modul namens pkg_resources"
Cerin

3
Ich bin verblüfft, dass das Problem mit dem Importerror mehr Vorteile hat als die Lösung des gleichen Kommentars darüber.
RobotHumans

1
Außerdem ist / path / to / pip wie folgt: python2. {5,6} / Scripts / pip2. {5,6}
raul

2
Um ein Python-Modul aufzurufen, sollten Siepython2.7 -m pip install PackageName
llrs

52

Ich hatte Python 2.6 standardmäßig installiert (Amazon EC2 AMI), benötigte aber Python2.7 sowie einige externe Pakete für meine Anwendung. Angenommen, Sie haben Python2.7 bereits zusammen mit Standardpython installiert (in meinem Fall 2.6). Hier erfahren Sie, wie Sie Pip und Pakete für nicht standardmäßiges Python2.7 installieren

Installieren Sie pip für Ihre Python-Version:

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

Verwenden Sie eine bestimmte Pip-Version, um Pakete zu installieren:

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

2
großartig funktionierte für mich für Python 3.4 mit folgenden: python3 get-pip.pyund später mit pip Befehl mitpip34 install example
Karl Adler

Vielen Dank. Sehr hilfreich. Getestet auf zwei verschiedenen Servern.
user2099484

3
Dies funktionierte, als ich 'python2.7 get-pip.py' anstelle von 'python27 get-pip.py' verwendete
SummerEla

Mann, der sich skizzenhaft anfühlte, aber bei der Installation von pip2.6 auf Centos 5 funktionierte.
Aaron R.

Erhalten, Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipals ich es versuchtepython2.6 get-pip.py
Pyderman

29

In Windows hat es bei mir so funktioniert:

  1. Ich habe den Namen der Python-Dateien python.py und pythonw.exe in python3.py pythonw3.py geändert

  2. Dann habe ich diesen Befehl einfach in der Eingabeaufforderung ausgeführt:

    python3 -m pip install package


4
Nur für alle anderen, die herausfinden, wie Pakete in python3 mit pip auf dem Mac installiert werden, ist dieser Befehl die Installation von Paketen. Ich habe stundenlang gesucht und es endlich gefunden!
Sidney

25

Andere Antworten zeigen, wie pip sowohl mit 2.X- als auch mit 3.X-Python verwendet wird, zeigen jedoch nicht, wie der Fall mehrerer Python-Distributionen (z. B. Original-Python und Anaconda-Python) behandelt wird .

Ich habe insgesamt 3 Python-Versionen: Original Python 2.7 und Python 3.5 und Anaconda Python 3.5.

So installiere ich ein Paket in:

  1. Original Python 3.5 :

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

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

    python3 -m pip install python-daemon

    oder

    pip3 install python-daemon

    Einfacher, da Anaconda die ursprünglichen Python-Binärdateien in der Benutzerumgebung überschreibt.

    Natürlich sollte die Installation in Anaconda mit einem condaBefehl erfolgen, dies ist nur ein Beispiel.


Stellen Sie außerdem sicher, dass pip für diesen bestimmten Python installiert ist. Möglicherweise müssen Sie pip manuell installieren. Dies funktioniert in Ubuntu 16.04:

sudo apt-get install python-pip 

oder

sudo apt-get install python3-pip

Der Rat bezüglich Anaconda hier ist nicht korrekt ... er "überschreibt" nichts. Die Tatsache, dass die Anaconda-Version standardmäßig auf Ihrem System verwendet wird, ist lediglich ein Nebeneffekt Ihrer spezifischen Konfiguration, der Art und Weise, wie Sie jeden Interpreter installiert haben, und der Pfadreihenfolge Ihrer Umgebung. Diese variieren für andere.
Corey Goldberg

@CoreyGoldberg Ich stimme zu, es war die Standardeinstellung bei meiner Installation von Ubuntu 16.04
Quasoft

1
Sie, Sir, sind der Mann. Von all den völlig nutzlosen Erklärungen rund um dieses Thema ist dies die einzige, die für mich Sinn gemacht hat. Zeit, diese Befehle zu aliasen und mit meinem Leben weiterzumachen! VIELEN DANK.
Iofacture

14

Ich bin kürzlich selbst auf dieses Problem gestoßen und habe festgestellt, dass ich auf meinem Linux-System mit Python 2 nicht den richtigen Pip für Python 3 bekommen habe.

Zuerst müssen Sie sicherstellen, dass Sie pip für Ihre Python-Version installiert haben:

Für Python 2:

sudo apt-get install python-pip

Für Python 3:

sudo apt-get install python3-pip

Um dann Pakete für die eine oder andere Version von Python zu installieren, verwenden Sie für Python 2 einfach Folgendes:

pip install <package>

oder für Python 3:

pip3 install <package>

11

pip ist auch ein Python-Paket. Der einfachste Weg, Module auf einer bestimmten Python-Version zu installieren, ist unten

 python2.7 /usr/bin/pip install foo

oder

python2.7 -m pip install foo

10

Anscheinend gibt es also mehrere Versionen von easy_install und pip . Es scheint ein großes Durcheinander zu sein. Wie auch immer, das habe ich getan, um Django für Python 2.7 unter Ubuntu 12.10 zu installieren:

$ 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

Von hier aus: https://docs.python.org/3/installing/

So installieren Sie Pakete für verschiedene Versionen, die gleichzeitig unter Linux, Mac, Posix installiert werden :

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

Verwenden Sie unter Windows den py Python Launcher in Kombination mit dem Schalter -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


7

Verwenden Sie unter Linux, Mac OS X und anderen POSIX-Systemen die versionierten Python-Befehle in Kombination mit dem -mSwitch, um die entsprechende Kopie von pip:

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

(Möglicherweise sind auch entsprechend versionierte Pip-Befehle verfügbar.)

Verwenden Sie unter Windows den pyPython-Launcher in Kombination mit dem -mSchalter:

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

Wenn Sie eine Fehlermeldung erhalten, py -3.4versuchen Sie Folgendes:

pip install SomePackage

5

Installation mehrerer Versionen von Python und den entsprechenden Paketen.

Python-Version auf demselben Windows-Computer: 2.7, 3.4 und 3.6

Installation aller 3 Versionen von Python :

  • Installierte Python 2.7, 3.4 und 3.6 mit den folgenden Pfaden

Geben Sie hier die Bildbeschreibung ein

PFAD für alle 3 Versionen von Python :

  • Stellen Sie sicher, dass die PATH-Variable (in Systemvariablen) die folgenden Pfade enthält: C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Umbenennen der ausführbaren Dateien für Versionen :

  • Der Name der ausführbaren Python-Datei in C: \ Python36 und C: \ Python34 wurde in python36 bzw. python34 geändert.

Geben Sie hier die Bildbeschreibung ein

Bei allen Versionen auf Eingabeaufforderung überprüft:

Geben Sie hier die Bildbeschreibung ein

Installieren Sie die Pakete für jede Version separat

Geben Sie hier die Bildbeschreibung ein


Vielen Dank !!! Dies ist der beste Weg
Rakshit ks

4

Wenn Sie mehrere Versionen sowie mehrere Architekturen (32 Bit, 64 Bit) haben, müssen Sie am Ende Ihrer Version -32 oder -64 hinzufügen.

Gehen Sie für Windows zu cmd und geben Sie py --list ein. Daraufhin werden die von Ihnen installierten Versionen angezeigt. Die Liste sieht folgendermaßen aus:

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

Der vollständige Befehl als Beispiel lautet:

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

Wenn Sie mehr Informationen erhalten möchten, um eine bestimmte Version eines Pakets auf einer bestimmten Python-Version zu installieren, verwenden Sie nach dem Paket == (Version). Als Beispiel,

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

2

Die meisten Antworten hier beziehen sich auf das Problem, aber ich möchte etwas hinzufügen, das mich im Hinblick auf die Erstellung einer alternativen Installation von Python /usr/localunter CentOS 7 ständig verwirrte . Als ich dort installierte, schien es, als würde pip funktionieren, da ich pip2.7 installund verwenden konnte es würde Module installieren. Was ich jedoch nicht herausfinden konnte, war, warum meine neu installierte Python-Version nicht sah, was ich installierte.

In CentOS 7 stellt sich heraus, dass sich bereits ein Python2.7 und ein Pip2.7 im /usr/binOrdner befinden. Um pip für Ihre neue Python-Distribution zu installieren, müssen Sie sudo ausdrücklich anweisen, zu gehen/usr/local/bin

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

Dadurch sollte pip2.7 /usr/local/binzusammen mit Ihrer Python-Version in Ihrem Ordner installiert werden . Der Trick besteht darin, dass Sie beim Installieren von Modulen entweder die zu enthaltende sudo- $PATHVariable ändern /usr/local/binoder ausführen müssen

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

Wenn Sie ein neues Modul installieren möchten. Ich habe ewig gebraucht, sudoum mich daran zu erinnern, dass ich das nicht sofort gesehen habe /usr/local/bin.


2

Hier ist meine Sicht auf das Problem. Funktioniert für Python3. Die Hauptmerkmale sind:

  • Jede Python-Version wird aus dem Quellcode kompiliert
  • Alle Versionen werden lokal installiert
  • Beeinträchtigt die Standard-Python-Installation Ihres Systems in keiner Weise
  • Jede Python-Version ist mit virtualenv isoliert

Die Schritte sind wie folgt:

  1. Wenn Sie mehrere zusätzliche Python-Versionen auf andere Weise installiert haben, entfernen Sie diese, z. B. entfernen Sie $ HOME / .local / lib / python3.x usw. (auch die global installierten). Berühren Sie jedoch nicht die Standardversion von Python3 Ihres Systems.

  2. Laden Sie die Quelle für verschiedene Python-Versionen unter der folgenden Verzeichnisstruktur herunter:

    $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. Bei jedem „Python-3.xy /“ Verzeichnis, gehen Sie wie folgt (bitte NICHT verwenden „sudo“ in einem der Schritte!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. Erstellen Sie unter "python_versions /" folgende Dateien:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Wenn Sie sich jetzt für python3.x entscheiden möchten, tun Sie dies jetzt

    source $HOME/python_versions/env_python3x.bash

    um die virtuelle Umgebung einzugeben

  6. Installieren Sie in der virtuellen Umgebung Ihre bevorzugten Python-Pakete mit

    pip install --upgrade package_name
  7. Um die Version virtualenv und python zu beenden, geben Sie einfach "disable" ein.

AKTUALISIEREN

Es scheint, dass dies --no-site-packagesveraltet ist. Hierfür gibt es eine einfache Lösung: Wenn Sie die virtuelle Umgebung aktiviert haben, zeigen Sie die Variable HOME env einfach auf eine andere Stelle als Ihr eigentliches Ausgangsverzeichnis, dh:

export HOME=some/where/else

Ein guter Weg, dies im Allgemeinen zu tun, ist:

  • Erstellen Sie virtualenv
  • Aktivieren Sie virtualenv
  • Wenn Sie vorhandene Bibliotheken zu Ihrer virtuellen Umgebung "recyceln" möchten, verknüpfen Sie sie mit Ihrer vorhandenen Installation, z ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Tun Sie export PYTHONPATH=,export HOME=/some/other/dir

Jetzt sollten Sie eine benutzerdefinierte isolierte virtuelle Umgebung haben.


0

Kontext: Archlinux

Aktion:
Installieren Sie python2-pip:
sudo pacman -S python2-pip

Sie haben jetzt pip2.7:
sudo pip2.7 install boto

Test (in meinem Fall brauchte ich 'boto'):
Führen Sie die folgenden Befehle aus:

python2
import boto

Erfolg: Kein Fehler.

Beenden: Ctrl+D


0

Wenn Sie beispielsweise andere Versionen (z. B. 3.5) als Standard festlegen und pip für Python 2.7 installieren möchten:

  1. Laden Sie pip unter https://pypi.python.org/pypi/pip (tar) herunter.
  2. Tar-Datei entpacken
  3. CD in das Verzeichnis der Datei
  4. sudo python2.7 setup.py installieren

0

Sie können beispielsweise zu C: \ Python2.7 \ Scripts gehen und dann cmd über diesen Pfad ausführen. Danach können Sie pip2.7 ausführen und Ihr Paket installieren ...

Dadurch wird das Paket für diese Version von Python installiert.


0

Dies ist wahrscheinlich das völlig Falsche (ich bin ein Python-Noob), aber ich bin einfach reingegangen und habe die Pip-Datei bearbeitet

#!/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

Speziell für Windows: \ path \ to \ python.exe -m pip install PackageName funktioniert.


0

für Mixer:

/usr/bin $ python3.7 -m pip install irc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.