it-swarm.com.de

pip: Umgang mit mehreren Python-Versionen?

Gibt es eine Möglichkeit, pip für mehrere Versionen von Python geeignet zu machen? Zum Beispiel möchte ich pip verwenden, um Dinge explizit in meiner Site 2.5-Installation oder in meiner Site 2.6-Installation zu installieren.

Mit easy_install verwende ich beispielsweise easy_install-2.{5,6}.

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

368
David Wolever

Die aktuelle Empfehlung verwendet python -m pip, wobei python die Version von Python ist, die Sie verwenden möchten. Dies ist die Empfehlung, da sie 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, für die Nachwelt hinterlassen:

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

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

EDIT: pip hat sein Schema geändert, um pipVERSION anstelle von pip-VERSION in Version 1.5 zu verwenden. Sie sollten Folgendes verwenden, wenn Sie pip >= 1.5 haben:

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

Überprüfen Sie https://github.com/pypa/pip/pull/1053 für weitere Details


Verweise:

435
Hugo Tavares

In Windows können Sie das Pip-Modul ausführen, indem Sie die Python-Version erwähnen (Sie müssen sicherstellen, dass sich der Launcher in Ihrem Pfad befindet)

py -3.4 -m pip install pyfora 

py -2.7 -m pip install pyfora

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

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

75
mon

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

Damit dies mit jeder Python-Version funktioniert, für die noch kein Pip installiert ist, müssen Sie pip herunterladen und python*version* setup.py install ausführen. Zum Beispiel python3.3 setup.py install. Dadurch wird der Importfehler in den Kommentaren behoben. (Wie von @hbdgaf vorgeschlagen)

75
bwinton

Ich hatte Python 2.6 standardmäßig installiert (Amazon EC2 AMI), benötigte jedoch Python 2.7 sowie einige externe Pakete für meine Anwendung. Angenommen, Sie haben python2.7 bereits zusammen mit dem Standard-Python installiert (in meinem Fall 2.6). So installieren Sie Pip und Pakete für nicht standardmäßiges Python2.7

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
47
Oleg

Es hat für mich in Fenstern 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 in der Eingabeaufforderung ausgeführt:

    python3 -m pip install package

27
Angie Alejo

Andere Antworten zeigen, wie man pip sowohl mit 2.X als auch mit 3.X Python verwendet, nicht aber mit wie man den Fall mehrerer Python-Distributionen behandelt (zB Original Python und Anaconda Python) .

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 dem Befehl conda erfolgen. Dies ist nur ein Beispiel.


Stellen Sie außerdem sicher, dass pip für diesen speziellen 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
22
quasoft

Ich bin vor kurzem 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 bekam.

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 Pakete für die eine oder andere Python-Version zu installieren, verwenden Sie einfach die folgenden Optionen für Python 2:

pip install <package>

oder für Python 3:

pip3 install <package>
14
clyde

pip ist auch ein Python-Paket. Der einfachste Weg, um Module für eine bestimmte Python-Version zu installieren, wäre daher unten

 python2.7 /usr/bin/pip install foo

oder 

python2.7 -m pip install foo
11
Prakash Palnati

Anscheinend gibt es mehrere Versionen von easy_install und pip. Es scheint ein großes Chaos zu sein. Jedenfalls habe ich Django für Python 2.7 auf Ubuntu 12.10 installiert:

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

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

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

(entsprechend versionierte Pip-Befehle sind möglicherweise ebenfalls verfügbar.)

Verwenden Sie unter Windows den Python-Launcher py in Kombination mit dem Schalter -m:

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 für py -3.4 erhalten, versuchen Sie Folgendes:

pip install SomePackage
6

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

So installieren Sie Pakete für verschiedene Versionen, die gleichzeitig installiert werden 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

Verwenden Sie unter Windows den py Python Launcher in Kombination mit der Option -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
6
jmunsch

Die meisten Antworten beziehen sich auf das Problem, aber ich möchte etwas hinzufügen, was mich ständig verwirrte, wenn eine alternative Installation von Python im /usr/local auf CentOS 7 erstellt wurde. Als ich dort installierte, schien es, als würde pip funktionieren, da ich es verwenden konnte pip2.7 install und 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/bin-Ordner befindet. Um pip für Ihre neue Python-Distribution zu installieren, müssen Sie Sudo ausdrücklich anweisen, zu /usr/local/bin zu gehen.

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

Dies sollte pip2.7 zusammen mit Ihrer Python-Version in Ihrem /usr/local/bin-Ordner installieren. Der Trick besteht darin, dass Sie, wenn Sie Module installieren möchten, entweder die Sudo-Variable $PATH so ändern müssen, dass sie /usr/local/bin enthält, oder dass Sie sie ausführen müssen

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

wenn Sie ein neues Modul installieren möchten. Ich musste immer daran denken, dass Sudo/usr/local/bin nicht sofort sah.

2
JeffP

Installation mehrerer Versionen von Python und 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

 enter image description here

PATH 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.

 enter image description here

Bei allen Versionen auf Eingabeaufforderung geprüft:

 enter image description here

Pakete für jede Version separat installieren

 enter image description here

0
Bahubali Patil

Dies ist wahrscheinlich völlig falsch (ich bin ein Python-Noob), aber ich ging einfach rein und editierte die Pip-Datei

#!/usr/bin/env python3 <-- I changed this line.

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __== '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
0
Jerinaw

Sie können beispielsweise nach C:\Python2.7\Scripts wechseln und dann cmd von diesem Pfad aus ausführen. Danach können Sie pip2.7 ausführen, um Ihr Paket zu installieren ...

Das Paket wird für diese Version von Python installiert.

0
thug_

Hier ist meine Meinung zum Problem. Funktioniert für Python3. Die Hauptmerkmale sind:

  • Jede Python-Version wird aus dem Quellcode zusammengestellt
  • Alle Versionen werden lokal installiert
  • Die standardmäßige Python-Installation Ihres Systems wird in keiner Weise beeinträchtigt
  • 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 sie, z. B. $ HOME/.local/lib/python3.x usw. (auch die global installierten). Berühren Sie jedoch nicht die standardmäßige Python3-Version 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. Führen Sie in jedem "Python-3.x.y /" -Verzeichnis Folgendes aus (verwenden Sie NICHT verwenden Sie "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 /" Dateien wie folgt:

    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, tun Sie dies

    source $HOME/python_versions/env_python3x.bash
    

    um die Virtualenv zu betreten

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

    pip install --upgrade package_name
    
  7. Zum Beenden der Virtualenv- und Python-Version geben Sie einfach "disable" ein.

0
El Sampsa

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

0
Aaquila

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

  1. download pip unter https://pypi.python.org/pypi/pip (tar)
  2. entpacken Sie die tar-Datei
  3. cd in das Verzeichnis der Datei
  4. Sudo python2.7 setup.py installieren
0
salomeow

Kontext: Archlinux

Aktion:
Installiere 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.

Ausgang: Ctrl+D

0
Paul Parker