So installieren Sie Python 2.x und Python 3.x unter Windows


230

Ich programmiere hauptsächlich in Python 3.x unter Windows 7, aber jetzt muss ich die Python Imaging Library (PIL), ImageMagick und wxPython verwenden, für die Python 2.x erforderlich ist.

Kann ich Python 2.x und Python 3.x in Windows 7 installieren? Wie würde ich beim Ausführen eines Skripts "auswählen", welche Version von Python es ausführen soll? Können die oben genannten Programme mehrere gleichzeitig installierte Python-Versionen verarbeiten? Ich habe stundenlang gesucht, wie dies ohne Erfolg zu tun ist.

Vielen Dank.



2
Ja, wie @NickT sagt, ist das am einfachsten. Leider gibt keine der folgenden Antworten den einfachen, unkomplizierten Ansatz. (Diejenigen, die Version 3.3 erwähnen, kommen am nächsten.) Eine bessere Antwort finden Sie in der akzeptierten unter der doppelten Frage: stackoverflow.com/a/17245543/1593924 Kurz gesagt, verwenden Sie den neuen "py" -Starter entweder mit oder ohne -3 Parameter. Fügen Sie Ihren Skripten Shebangs (#!) Hinzu, damit Sie keinen Parameter benötigen.
Jon Coombs

1
Einige fanden auch die Details, die ich hier gepostet habe, hilfreich: stackoverflow.com/a/13533958/1593924
Jon Coombs

Antworten:


150

Ich fand, dass der formale Weg, dies zu tun, wie folgt ist:

Installieren Sie einfach zwei (oder mehr, mit ihren Installationsprogrammen) Versionen von Python unter Windows 7 (für mich arbeiten Sie mit 3.3 und 2.7).

Befolgen Sie die nachstehenden Anweisungen und ändern Sie die Parameter entsprechend Ihren Anforderungen.

Erstellen Sie die folgende Umgebungsvariable (standardmäßig beim Doppelklick):

Name:  PY_PYTHON
Value: 3

Fügen Sie zum Starten eines Skripts in einem bestimmten Interpreter den folgenden Shebang (Beginn des Skripts) hinzu:

#! python2

Verwenden Sie den folgenden Eingabeaufforderungsbefehl, um ein Skript mit einem bestimmten Interpreter auszuführen:

> py -2 MyScript.py

So starten Sie einen bestimmten Interpreter:

> py -2

So starten Sie den Standardinterpreter (definiert durch die Variable PY_PYTHON):

> py

Ressourcen

Dokumentation: Verwenden von Python unter Windows

PEP 397 - Python Launcher für Windows


8
Um easy_install oder pip mit beiden Versionen zu verwenden, ändern Sie außerdem den Pfad in include c:\python35;c:\python35\scripts;c:\python27\scripts;. Dies ermöglicht die Verwendung von pip2/ pip3und easy_install-2.7/ easy_install-3.5anstelle von pipund easy_install.
rdtsc

1
Funktioniert nicht mit verschiedenen Programmen, die kein eigenes Python liefern und auf der Verwendung der Systemversion bestehen, und respektiert den Launcher nicht.
Jonathan Baldwin

1
Nein, fügen Sie dem Pfad kein Python hinzu. Verwenden Sie py -m pip install .... Fügen Sie nachher Schalter hinzu, pyum auszuwählen, unter welchem ​​Python pip wie oben ausgeführt werden soll.
Mark Tolonen

75

Ich habe sowohl 2.7.6 als auch 3.3.4 heruntergeladen. Python 3.3.4 hat die Option, den Pfad in der Umgebungsvariablen hinzuzufügen, damit dies erledigt wurde. Im Grunde habe ich Python 2.7.6 einfach manuell hinzugefügt.

Wie man...

  1. Start> Wählen Sie im Suchtyp in der Umgebung "Umgebungsvariablen in Ihrem Konto bearbeiten" 1 aus

  2. Scrollen Sie nach unten zu Pfad, wählen Sie Pfad aus und klicken Sie auf Bearbeiten.

  3. Fügen Sie C: \ Python27 hinzu; Sie sollten dort also Pfade zu beiden Versionen von Python haben, aber wenn Sie dies nicht tun, können Sie es einfach so bearbeiten, dass Sie es tun ..... C: \ Python27; C: \ Python33;

  4. Navigieren Sie zum Ordner Python27 in C: \ und benennen Sie eine Kopie von python.exe in python2.exe um

  5. Navigieren Sie zum Ordner Python34 in C: \ und benennen Sie eine Kopie von python.exe in python3.exe um

  6. Test: Öffnen Sie die Eingabeaufforderung und geben Sie python2 ein .... BOOM! Python 2.7.6. Ausstieg.

  7. Test: Öffnen Sie die Eingabeaufforderung und geben Sie python3 ein .... BOOM! Python 3.4.3. Ausstieg.

Hinweis: (Um die Pip-Befehle in Schritt 4 und 5 nicht zu unterbrechen, bewahren Sie die Kopie von python.exe im selben Verzeichnis wie die umbenannte Datei auf.)


43
Dies wird sowohl pip2 als auch pip3 brechen! Ersetzen Sie Python nicht, kopieren Sie es und benennen Sie die zweite Datei in python2 / python3 um.
Brunofitas

1
Nur ein Wort der Vorsicht, ich konnte Python erst deinstallieren, als ich die Namen zurückgesetzt hatte. Mein Rat ist, Kopien zu erstellen und diese umzubenennen, aber die ursprünglichen python.exe-Dateien in Ruhe zu lassen **, wie auch von bruno erwähnt.
Logic1

2
Könnten Sie brunofitas Feedback in der Antwort verarbeiten?
030

Ja, ich habe gerade die Datei python.exe in der Python3-Installation in python3.exe umbenannt. Ich denke, dass dies automatisch mit Python in einer * nix-Umgebung geschieht. Natürlich gibt es keine EXE-Dateien, aber es gibt ein Python2- und ein Python3-Programm. :)
user3870315

Wenn Sie eine Bibliothek / ein Plugin haben, die von einer der beiden Python-Versionen abhängt, stellen Sie sicher, dass die Version in Ihrer PATH-Umgebungsvariablen an erster Stelle steht
aphoe

51

Ich habe mehrere Versionen in Windows. Ich ändere nur den Exe-Namen der Version, die ich nicht standardmäßig verwende.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

Bei Paketinstallationsprogrammen können Sie bei den meisten Exe-Installationsprogrammen die Python-Installation auswählen, um das Paket ebenfalls hinzuzufügen. Überprüfen Sie für die manuelle Installation die Option --prefix, um zu definieren, wo das Paket installiert werden soll:

http://docs.python.org/install/index.html#alternate-installation-windows-the-prefix-scheme


Das hat funktioniert. Bevor ich diese Änderung vornahm und versuchte, ein Programm in Python 2.7 auszuführen, lief es immer noch in Python 3.1 (möglicherweise, weil Windows 7 nicht zwei verschiedene Programme mit demselben Namen verarbeiten kann). Nachdem die Exes wie gezeigt umbenannt wurden, lief alles gut.
dln385

4
@ dln385: Wenn es Ihre Frage beantwortet hat, sollten Sie es akzeptieren, indem Sie auf das Häkchen klicken.
Dappawit

1
Das hat auch bei mir funktioniert. Ich hatte einen Konflikt zwischen Python 2.7 und Python 3.2. Da ich Python 3.2 zuerst installiert hatte (und entsprechend als Umgebungsvariable festgelegt hatte), konnte ich in der Eingabeaufforderung nicht auf Python 2.7 zugreifen (stattdessen habe ich Python 3.2 erhalten). Ich wollte Python 2.7 als Standard verwenden, daher habe ich python.exe in python3.2.exe geändert und python.exe von Python 2.7 unverändert gelassen. Das hat funktioniert.
Robert Smith

Ich habe seit einiger Zeit kein neues Python3 unter Windows installiert, aber die Version, die ich habe, enthält pip as pip3und pip3.4. (Es enthält es auch als pip, aber ich würde denken, dass das Löschen alle Konflikte mit Python2 lösen sollte). Eigentlich habe ich keine C:\Python34\Scriptsin meinem Path, also hatte ich keine Probleme mit Pip ...
Monkut

30

Wenn Sie Anaconda Python verwenden, können Sie problemlos verschiedene Umgebungen installieren.

Angenommen, Sie hatten Anaconda Python 2.7 installiert und wollten eine Python 3.4-Umgebung:

conda create -n py34 python=3.4 anaconda

Dann, um die Umgebung zu aktivieren:

activate py34

Und zu deaktivieren:

deactivate py34

(Unter Linux sollten Sie verwenden source activate py34.)

Links:

Laden Sie Anaconda Python herunter

Anweisungen für Umgebungen


IMO Conda ist bei weitem der beste Weg, um mit verschiedenen Python-Installationen zu spielen. Ich habe so viele Dinge durcheinander gebracht, bevor ich nach Anaconda gezogen bin.
Jrinker

11

Um eine beliebige Version von Python auf demselben System zu installieren und auszuführen, folgen Sie meiner Anleitung unten.


Angenommen, Sie möchten Python 2.x und Python 3.x auf demselben Windows-System installieren.

  1. Installieren Sie beide Binärversionen an einer beliebigen Stelle.

    • Wenn Sie dazu aufgefordert werden, registrieren Sie nicht die Dateierweiterungen und
    • Fügen Sie sie nicht automatisch zur Umgebungsvariablen PATH hinzu
  2. Wenn Sie einfach den Befehl pythonausführen, wird die ausführbare Datei, die zuerst in PATH ausgeführt wird, zum Starten ausgewählt. Mit anderen Worten, fügen Sie die Python-Verzeichnisse manuell hinzu. Die zuerst hinzugefügte wird bei der Eingabe ausgewählt python. Aufeinanderfolgende Python-Programme (zunehmende Reihenfolge, in der ihre Verzeichnisse in PATH abgelegt werden) werden wie folgt ausgewählt:

    • py -2 für die Sekunde python
    • py -3 für die dritte pythonetc ..
  3. Unabhängig von der Reihenfolge der "Pythons" können Sie:

    • Führen Sie Python 2.x-Skripte mit dem folgenden Befehl aus: py -2 (Python 3.x-Funktionalität) (dh das erste in Ihrem PATH gefundene Python 2.x-Installationsprogramm wird ausgewählt).
    • Führen Sie Python 3.x-Skripte mit dem folgenden Befehl aus: oder py -3 (dh das erste in Ihrem PATH gefundene Python 3.x-Installationsprogramm wird ausgewählt).

In meinem Beispiel habe ich zuerst Python 2.7.14 und Python 3.5.3 installiert. So beginnt meine PATH-Variable mit:

PATH = C: \ Programme \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Programme \ Python_3.6 \ Scripts \; C: \ Programme \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Programme (x86) \ Gemeinsame Dateien \ Intel \ Shared

...

Beachten Sie, dass Python 2.7 an erster Stelle und Python 3.5 an zweiter Stelle steht.

  • pythonWenn Sie also den Befehl ausführen, wird Python 2.7 gestartet (wenn Python 3.5 den gleichen Befehl Python 3.5 starten würde).
  • Durch Ausführen wird py -2Python 2.7 gestartet (da es vorkommt, dass der zweite Python Python 3.5 ist, mit dem nicht kompatibel ist py -2). Durch Ausführen wird py -3Python 3.5 gestartet (da es sich um Python 3.x handelt).
  • Wenn Sie später eine andere Python auf Ihrem Weg hätten, würden Sie wie folgt starten : py -4. Dies kann sich ändern, wenn Python Version 4 veröffentlicht wird.

Jetzt py -4oder py -5etc. auf meinen Systemausgängen: Requested Python version (4) not installedoder Requested Python version (5) not installedetc.

Hoffentlich ist das klar genug.


Wie können Sie eine Pip-Installation in einem der Python-Dists angeben?
Víctor Martínez

Für die erste gefundene Python geben Sie einfach ein pip. Für jede andere installierte Python müssen Sie den Pfad manuell angeben, dh. C:\Python27\Scripts\pip.py [parameters]. (Natürlich können Sie als Verknüpfung jede gewünschte Exe in eine Umgebungsvariable einfügen.)
Nikos

@ Nik-Lz auf welchen "py -2" -Befehl beziehen Sie sich? Ich scheine diese nicht auf meinem Windows 7 zu haben.
Janos

2
Genau so sollte Python unter Windows bei mehreren Versionen verwendet werden.
getName


8

Folgendes können Sie tun:

Installieren Sie cmder . Öffnen und verwenden Sie Cmder wie bei Ihrem Cmd-Terminal. Verwenden Sie den Befehlsalias, um Befehlsaliasnamen zu erstellen.

Ich habe folgendes gemacht:

alias python2 = c:\python27\python.exe
alias python3 = c:\python34\python.exe

Und das ist es! ;-);


6
set-alias python2 c:\python27\python.exe
Prophet Daniel

Verwenden Sie den Set-Alias ​​als Beispiel für die Verwendung von Powershell. In diesem Fall muss Cmder nicht installiert werden.
Prophet Daniel

@ProphetDaniel Dies sollte als separate Antwort veröffentlicht werden. Es beantwortet die ursprüngliche Frage vollständig.
Dr_Zaszuś

7

Ich habe eigentlich nur an eine interessante Lösung gedacht. Während Windows es Ihnen nicht erlaubt, Programme einfach zu aliasen, können Sie stattdessen umbenannte Batch-Dateien erstellen, die das aktuelle Programm aufrufen.

Erstellen Sie die Datei python2.bat im selben Verzeichnis wie python2.exe, anstatt die ausführbare Datei umzubenennen, die viele Probleme verursacht, einschließlich pip. Fügen Sie dann die folgende Zeile hinzu:

%~dp0python %*

Was bedeutet diese archaische Syntax? Nun, es ist ein Batch-Skript (Windows-Version von Bash). % ~ dp0 ruft das aktuelle Verzeichnis ab und% * übergibt nur alle Argumente an Python, die an das Skript übergeben wurden.

Wiederholen Sie dies für python3.bat

Sie können dies auch für pip und andere Dienstprogramme tun. Ersetzen Sie einfach das Wort Python in der Datei durch pip oder den Dateinamen. Der Alias ​​ist der Name der Datei.

Das Beste ist, dass Windows beim Hinzufügen zum PATH die so ausgeführte Erweiterung ignoriert

python3

Startet die Python3-Version und der Befehl python2 startet die Python2-Version.

Übrigens ist dies die gleiche Technik, die Spyder verwendet, um sich dem Pfad unter Windows hinzuzufügen. :) :)


1
Tolle Lösung, ohne vorhandene Python-Dateien zu ändern.
Om Prakash

3

Sie können mehrere Versionen von Python auf einem Computer installieren und während des Setups festlegen, dass sich eine davon mit Python-Dateierweiterungen verknüpft. Wenn Sie Module installieren, gibt es verschiedene Setup-Pakete für verschiedene Versionen, oder Sie können auswählen, auf welche Version Sie abzielen möchten. Da sie sich im Allgemeinen selbst im Site-Packages-Verzeichnis der Interpreter-Version installieren, sollte es keine Konflikte geben (aber ich habe dies nicht getestet). Um auszuwählen, welche Python-Version Sie verwenden möchten, müssen Sie den Pfad zum Interpreter manuell angeben, wenn dies nicht der Standardpfad ist. Soweit ich weiß, würden sie dieselben PATH- und PYTHONPATH-Variablen verwenden, was ein Problem sein könnte.

Hinweis: Ich verwende Windows XP. Ich habe keine Ahnung, ob sich dies für andere Versionen ändert, aber ich sehe keinen Grund dafür.


3
Ich habe Python 2.5, 2.6 und 3.1 alle gleichzeitig installiert. Es ist mir nie in den Sinn gekommen, dass ich etwas Schwierigeres tun muss, als nur alle Installationsprogramme für jede Version auszuführen, die ich benötige.
SingleNegationElimination

3

Was ich auf meinem eigenen Windows-Computer getan habe, auf dem Python 2.7 und Python 3.4 installiert sind, ist, dass ich eine einfache .bat-Datei in dasselbe Verzeichnis geschrieben habe wie meine Python.exe-Dateien. Sie sehen ungefähr so ​​aus,

cmd /k "c:\python27\python.exe" %*

Mit% * können Sie anschließend Argumente (Python-Dateien) hinzufügen. Ich glaube, / k hält die Eingabeaufforderung offen, nachdem das Skript ausgeführt wurde. Dann speichere ich das als python27.bat. Dann gehe ich in mein Python 3-Verzeichnis und erstelle dort eine Bat-Datei. Jetzt kann ich in meiner Kommandozeile schreiben

Python27 helloworld.py

Oder

Python34 helloworld.py

Und sie werden in ihren jeweiligen Versionen von Python ausgeführt. Stellen Sie sicher, dass sich c: \ python27 und c: \ python34 in Ihren Umgebungsvariablen befinden.

Ich habe meine Antwort von hier bekommen


2

Ich habe dies in drei Schritten getan, indem ich den Anweisungen hier gefolgt bin: Dies alles wird direkt von hier übernommen: http://ipython.readthedocs.io/en/stable/install/kernel_install.html . Ich verwende derzeit Python 2.x unter Windows 8 und habe Anaconda 4.2.13 installiert.

1) Installieren Sie zuerst die neueste Version von Python:

conda create -n python3 python=3 ipykernel

2) Aktivieren Sie als nächstes python3

activate python3

3) Installieren Sie den Kernel:

python -m ipykernel install --user

Wenn Sie Python 3 installiert haben und 2 installieren möchten, wechseln Sie die 2 und die 3 oben. Wenn Sie ein neues Notizbuch öffnen, können Sie jetzt zwischen Python 2 und 3 wählen.


1

Überprüfen Sie Ihre Systemumgebungsvariablen nach der Installation von Python. Die Verzeichnisse von Python 3 sollten sich zuerst in Ihrer PATH-Variablen und dann in Python 2 befinden.

Welche Pfadvariable zuerst übereinstimmt, wird von Windows verwendet.

Wie immer startet py -2 in diesem Szenario python2.


1

Ich bin selbst auf dieses Problem gestoßen und habe meine Starter in einer .bat-Datei erstellt, damit Sie die Version auswählen können, die Sie starten möchten.

Das einzige Problem ist, dass sich Ihre .py im Python-Ordner befinden muss, aber hier ist der Code:

Für Python2

@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Für Python3

@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

Speichern Sie sie als .bat und folgen Sie den Anweisungen im Inneren.


0

Installieren Sie die am häufigsten verwendete (in meinem Fall 3.3) über der anderen. Dadurch wird IDLE gezwungen, die gewünschte zu verwenden.

Alternativ (aus der Python3.3-README-Datei):

Mehrere Versionen installieren

Wenn Sie auf Unix- und Mac-Systemen mehrere Versionen von Python mit demselben Installationspräfix (Argument --prefix für das Konfigurationsskript) installieren möchten, müssen Sie darauf achten, dass Ihre primäre ausführbare Python-Datei nicht durch die Installation einer anderen Version überschrieben wird. Alle mit "make altinstall" installierten Dateien und Verzeichnisse enthalten die Haupt- und Nebenversion und können somit nebeneinander leben. "make install" erstellt auch $ {prefix} / bin / python3, das auf $ {prefix} /bin/pythonX.Y verweist. Wenn Sie mehrere Versionen mit demselben Präfix installieren möchten, müssen Sie entscheiden, welche Version (falls vorhanden) Ihre "primäre" Version ist. Installieren Sie diese Version mit "make install". Installieren Sie alle anderen Versionen mit "make altinstall".

Wenn Sie beispielsweise Python 2.6, 2.7 und 3.3 installieren möchten, wobei 2.7 die primäre Version ist, führen Sie "make install" in Ihrem Build-Verzeichnis 2.7 und "make altinstall" in den anderen Versionen aus.


0

Ich musste sie nur installieren. Dann habe ich die kostenlose (und tragbare) Software unter http://defaultprogramseditor.com/ unter "Dateitypeinstellungen" / "Kontextmenü" / search: "py" verwendet, die .py-Datei ausgewählt und einen Befehl 'open' für die Datei hinzugefügt 2 IDLE durch Kopieren des vorhandenen Befehls 'open with IDLE', Ändern der Namen in IDLE 3.4.1 / 2.7.8 und Ersetzen der Dateinummern der jeweiligen Versionen im Programmpfad. Jetzt muss ich nur noch mit der rechten Maustaste auf die .py-Datei klicken und auswählen, welchen IDLE ich verwenden möchte. Kann das gleiche mit direkten Dolmetschern tun, wenn Sie es vorziehen.


-1

Funktioniert nur, wenn Sie Ihren Code in Ihrer Python-IDE ausführen

Ich habe sowohl Python 2.7 als auch Python 3.3 auf meinem Windows-Betriebssystem installiert. Wenn ich versuche, eine Datei zu starten, wird diese normalerweise in der Python 2.7-IDE geöffnet. Als ich dieses Problem unter Python 3.3 ausführte, öffnete ich Python 3.3 IDLE (Python GUI), wählte eine Datei aus, öffnete meine Datei mit dem IDLE und speicherte sie. Wenn ich dann meinen Code ausführe, wird er im IDLE ausgeführt, mit dem ich ihn gerade geöffnet habe. Es funktioniert umgekehrt mit 2.7.


-1

Ich habe sowohl Python 2.7.13 als auch Python 3.6.1 unter Windows 10pro installiert und beim Versuch von pip2 oder pip3 wurde der gleiche "schwerwiegende Fehler" angezeigt.

Um dies zu korrigieren, ging ich zum Speicherort von python.exe für Python 2- und Python 3-Dateien und erstellte jeweils eine Kopie. Anschließend benannte ich jede Kopie in python2.exe und python3.exe um, abhängig von der Python-Version in der Installationsordner. Ich hatte daher in jedem Python-Installationsordner je nach Python-Version sowohl eine python.exe-Datei als auch eine python2.exe oder python3.exe.

Dies löste mein Problem, als ich entweder pip2 oder pip3 tippte.


-2

Wenn Sie nichts anderes zum Laufen bringen können, öffnen Sie einen Interpreter in der von Ihnen gewählten Version (ich bevorzuge die Verwendung von iPython) und:

import subprocess

subprocess.call('python script.py -flags')

Dies verwendet die Python-Version, unter der Sie gerade arbeiten. Funktioniert gut für ein einzelnes Skript, gerät jedoch schnell außer Kontrolle, wenn viele Skripte ausgeführt werden. In diesem Fall können Sie jederzeit eine Batchdatei mit all diesen Aufrufen erstellen. Nicht die eleganteste Antwort, aber es funktioniert.

Gibt es eine Möglichkeit, Aliase für verschiedene Python-Versionen a la Linux zu erstellen?

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.