it-swarm.com.de

Kann ich Python 3.x und 2.x auf demselben Windows-Computer installieren?

Ich führe Windows aus und die Shell/OS führt automatisch Python basierend auf den Registrierungseinstellungen aus, wenn Sie ein Programm in der Befehlszeile ausführen. Wird dieser Fehler auftreten, wenn ich eine Python-Version 2.x und 3.x auf demselben Computer installiere?

Ich möchte mit Python 3 spielen und gleichzeitig 2.x-Skripts auf demselben Rechner ausführen.

131
minty

Die offizielle Lösung für die Koexistenz scheint der Python Launcher für Windows , PEP 397 zu sein, der in Python 3.3.0 enthalten war. Installieren der Release-Dumps py.exe und pyw.exe-Startprogramme in %SYSTEMROOT% (C:\Windows), das dann mit py- und pyw-Skripts verknüpft wird.

Lassen Sie die Option "Erweiterungen registrieren" aktiviert, um das neue Startprogramm verwenden zu können (ohne dabei Ihre eigenen Zuordnungen manuell einrichten zu müssen). Ich weiß nicht genau warum, aber auf meinem Rechner wurde Py 2.7 als "Standardeinstellung" (des Launchers) verwendet.

Wenn Sie Skripts ausführen, indem Sie sie direkt von der Befehlszeile aus aufrufen, werden sie durch den Launcher geleitet und der Shebang (falls vorhanden) analysiert. Sie können den Launcher auch explizit aufrufen und die Schalter verwenden: py -3 mypy2script.py

Alle Arten von Shebangs scheinen zu funktionieren

  • #!C:\Python33\python.exe
  • #!python3
  • #!/usr/bin/env python3

sowie mutwillige Missbräuche

  • #! notepad.exe
61
Nick T

Sie können beide installiert haben.

Sie sollten dies vor Ihrem Skript schreiben:

#!/bin/env python2.7

oder schließlich ...

#!/bin/env python3.6

Aktualisieren

Meine Lösung funktioniert perfekt mit Unix, nach einer kurzen Suche auf Google hier ist die Windows-Lösung:

#!c:/Python/python3_6.exe -u

Gleiches: vor Ihrem Skript.

35

Hier ist mein Setup:

  1. Installieren Sie sowohl Python 2.7 als auch 3.4 mit den Installationsprogrammen windows .
  2. Gehen Sie zu C:\Python34 (dem Standardinstallationspfad) und ändern Sie python.exe in python3.exe
  3. Bearbeiten SieIhre Umgebungsvariablen , um C:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\; aufzunehmen

Jetzt können Sie in der Befehlszeile python für 2.7 und python3 für 3.4 verwenden.

32
Alistair Martin

Ab Version 3.3 hat Python das Dienstprogramm Launcher für Windows https://docs.python.org/3/using/windows.html#python-launcher-for-windows eingeführt.

Um mehrere Versionen von Python verwenden zu können:

  1. installieren Sie Python 2.x (x ist jede Version, die Sie benötigen)
  2. installieren Sie Python 3.x (x ist eine beliebige Version, die Sie benötigen, außerdem müssen Sie eine Version 3.x> = 3.3 haben) 
  3. Öffnen Sie Eingabeaufforderung 
  4. geben Sie py -2.x ein, um Python 2.x zu starten
  5. geben Sie py -3.x ein, um Python 3.x zu starten
28
Ivan Kucerak

Ich verwende 2.5, 2.6 und 3.0 von der Shell mit einzeiligen Batch-Skripts des Formulars:

:: The @ symbol at the start turns off the Prompt from displaying the command.
:: The % represents an argument, while the * means all of them.
@c:\programs\pythonX.Y\python.exe %*

Benennen Sie sie pythonX.Y.bat und legen Sie sie irgendwo in Ihren PFAD. Kopieren Sie die Datei für die bevorzugte Nebenversion (d. H. Die neueste) nach pythonX.bat. (Zum Beispiel copy python2.6.bat python2.bat.) Dann können Sie python2 file.py von überall aus verwenden.

Dies hilft jedoch nicht oder wirkt sich nicht auf die Situation der Windows-Dateizuordnung aus. Dazu benötigen Sie ein Launcher-Programm, das die #!-Zeile liest und diese dann mit den .py- und .pyw-Dateien verbindet.

9
Roger Pate

Bitte schön...

winpylaunch.py ​​

#
# Looks for a directive in the form: #! C:\Python30\python.exe
# The directive must start with #! and contain ".exe".
# This will be assumed to be the correct python interpreter to
# use to run the script ON WINDOWS. If no interpreter is
# found then the script will be run with 'python.exe'.
# ie: whatever one is found on the path.
# For example, in a script which is saved as utf-8 and which
# runs on Linux and Windows and uses the Python 2.6 interpreter...
#
#    #!/usr/bin/python
#    #!C:\Python26\python.exe
#    # -*- coding: utf-8 -*-
#
# When run on Linux, Linux uses the /usr/bin/python. When run
# on Windows using winpylaunch.py it uses C:\Python26\python.exe.
#
# To set up the association add this to the registry...
#
#    HKEY_CLASSES_ROOT\Python.File\Shell\open\command
#    (Default) REG_SZ = "C:\Python30\python.exe" S:\usr\bin\winpylaunch.py "%1" %*
#
# NOTE: winpylaunch.py itself works with either 2.6 and 3.0. Once
# this entry has been added python files can be run on the
# commandline and the use of winpylaunch.py will be transparent.
#

import subprocess
import sys

USAGE = """
USAGE: winpylaunch.py <script.py> [arg1] [arg2...]
"""

if __== "__main__":
  if len(sys.argv) > 1:
    script = sys.argv[1]
    args   = sys.argv[2:]
    if script.endswith(".py"):
      interpreter = "python.exe" # Default to wherever it is found on the path.
      lines = open(script).readlines()
      for line in lines:
        if line.startswith("#!") and line.find(".exe") != -1:
          interpreter = line[2:].strip()
          break
      process = subprocess.Popen([interpreter] + [script] + args)
      process.wait()
      sys.exit()
  print(USAGE)

Ich habe es gerade beim Lesen dieses Threads angeschlagen (weil ich es auch brauchte). Ich habe Pythons 2.6.1 und 3.0.1 unter Ubuntu und Windows. Wenn es für Sie nicht funktioniert, posten Sie hier Korrekturen.

7
Nev

Wenn Sie beides zu Umgebungsvariablen hinzufügen, liegt ein Konflikt vor, da die beiden ausführbaren Dateien denselben Namen haben: python.exe.

Benennen Sie einfach einen von ihnen um. In meinem Fall habe ich es in python3.exe umbenannt.

Wenn ich also python starte, wird python.exe ausgeführt. Dies ist 2.7 und wenn ich python3 starte, wird python3.exe ausgeführt. Dies ist 3.6

 enter image description here

Hinweis: dasselbe sollte mit pip-Skripts gemacht werden.

6
EasyOdoo

Soweit ich weiß, läuft Python nicht mit einer Registrierungseinstellung, sondern mit der PATH-Variablen von der Befehlszeile.

Wenn Sie also auf die richtige Version Ihres PATHs zeigen, werden Sie diese verwenden. Denken Sie daran, Ihre Eingabeaufforderung erneut zu starten, um die neuen PATH-Einstellungen zu verwenden.

4
James McMahon

Die Python-Installation verknüpft normalerweise .py-, .pyw- und .pyc-Dateien mit dem Python-Interpreter. So können Sie ein Python-Skript ausführen, indem Sie entweder im Explorer darauf doppelklicken oder den Namen in ein Befehlszeilenfenster eingeben (ohne dass Sie python scriptname.py eingeben müssen, sondern nur scriptname.py).

Wenn Sie diese Zuordnung manuell ändern möchten, können Sie diese Schlüssel in der Windows-Registrierung bearbeiten:

HKEY_CLASSES_ROOT\Python.File\Shell\open\command
HKEY_CLASSES_ROOT\Python.NoConFile\Shell\open\command
HKEY_CLASSES_ROOT\Python.CompiledFile\Shell\open\command

Python Launcher

Die Leute haben an einem Python-Launcher für Windows gearbeitet: ein leichtes Programm, das mit .py- und .pyw-Dateien verknüpft ist und nach einer "Shebang" -Linie (ähnlich wie Linux ua) in der ersten Zeile sucht und Python 2.x oder 3 startet. x nach Bedarf. Siehe "Ein Python-Launcher für Windows" Blogeintrag für Details.

3
Craig McQueen

Versuchen Sie es mit Anaconda. 

Nehmen wir an, dass Sie das Konzept der Anaconda-Umgebungen verwenden, Sie brauchen Python 3, um sich mit der Programmierung vertraut zu machen. Sie möchten Ihre Python 2.7-Umgebung jedoch nicht durch Aktualisieren von Python auslöschen. Sie können eine neue Umgebung mit dem Namen "Schlangen" (oder was auch immer Sie möchten) erstellen und aktivieren und die neueste Version von Python 3 wie folgt installieren:

conda create --name snakes python=3

Einfacher als es klingt, schauen Sie sich die Intro-Seite hier an: Erste Schritte mit Anaconda

Um Ihr spezifisches Problem zu lösen, wenn Version 2.x und 3.x nebeneinander laufen, siehe : Verwalten von Python-Versionen mit Anaconda

3
Cale Sweeney

So führen Sie Python 2 und 3 auf demselben Computer aus

  1. Installieren Sie Python 2.x 
  2. installieren Sie Python 3.x 
  3. Starten Sie Powershell 
  4. Art Python -2 um Python 2.x zu starten 
  5. Art Python -3 um Python 2.x zu starten 

Das Python Launcher für Windows wurde seit Version 3.3 in Python eingebettet, wie es 2011 versprochen wurde, als der Stand alone erstmals debütierte:

Python Launcher für Windows

2
rogerwamba

Bevor ich beide mutig gleichzeitig installiert habe, hatte ich so viele Fragen. Wenn ich Python gebe, wird es zu py3 gehen, wenn ich py2 will? pip/virtualenv wird unter py2/3 passieren?

Es scheint jetzt sehr einfach zu sein.

Installieren Sie einfach beide blind. Vergewissern Sie sich, dass Sie den richtigen Typ (x64/x32) haben. Während der Installation/stellen Sie sicher, dass Sie den Pfad zu Ihren Umgebungsvariablen hinzufügen.

[ENVIRONMENT]::SETENVIRONMENTVARIABLE("PATH", "$ENV:PATH;C:\PYTHONx", "USER")

Ersetzen Sie das x im obigen Befehl, um den Pfad festzulegen.

Dann gehen Sie zu beiden Ordnern. 

Navigiere zu

python3.6/Scripts/

und benennen Sie pip in pip3 um.

Wenn pip3 bereits vorhanden ist, löschen Sie den Pip. Dadurch wird sichergestellt, dass nur pip unter python2 ausgeführt wird. Sie können dies überprüfen durch:

pip --version

Wenn Sie pip mit python3 verwenden möchten, verwenden Sie einfach 

pip3 install 

Sie können das gleiche mit Python-Dateien und anderen tun.

Prost!

2
Shreyaa Sridhar

Einfach, nachdem Sie beide python Versionen installiert haben, fügen Sie die Pfade zu den Umgebungsvariablen hinzu; siehe environment variable settings . Wechseln Sie dann zu den Ordnern python 2 und python 3, und benennen Sie sie wie gezeigt in python2 bzw. python3 um here for python2 und here for python3 . Geben Sie nun in cmd python2 oder python3 ein, um die gewünschte Version zu verwenden. Siehe here .

Stellen Sie sicher, dass die Umgebungsvariable PATH nicht beide python.exe-Dateien enthält (fügen Sie die Datei hinzu, die Sie derzeit verwenden, um Skripts täglich auszuführen), oder machen Sie es wie von Kniht mit den Batchdateien empfohlen. Abgesehen davon sehe ich nicht warum nicht.

P.S: Ich habe 2.6 als "primary" python und 3.0 als mein "play" python installiert. Der 2.6 ist imPFADenthalten. Alles funktioniert gut.

1
Geo

Ich denke, es gibt eine Option, um die Windows-Dateizuordnung für .py-Dateien im Installationsprogramm einzurichten. Deaktivieren Sie es und Sie sollten in Ordnung sein.

Wenn nicht, können Sie .py-Dateien problemlos mit der vorherigen Version verknüpfen. Am einfachsten klicken Sie mit der rechten Maustaste auf eine .py-Datei und wählen "Öffnen mit"/"Programm auswählen". Wählen Sie im angezeigten Dialogfeld die Version von Python aus, die Sie standardmäßig verwenden möchten, oder markieren Sie sie, und aktivieren Sie das Kontrollkästchen "Dieses Programm immer zum Öffnen dieser Datei verwenden". 

1
Brian

Hmm..Ich tat dies gerade, indem ich einfach Python 3.6.5 für Windows unter https://www.python.org/downloads/release/python-365/ heruntergeladen habe und sichergestellt habe, dass der Launcher installiert wird. Dann habe ich die Anweisungen zur Verwendung von Python 2 und Python 3 befolgt. Starten Sie den Befehl Prompt erneut und verwenden Sie dann py -2.7, um Python 2 und py oder py -3.6 zu verwenden, um Python 3 zu verwenden Verwenden Sie pip2 für Python 2s pip und pip für Python 3s pip.

0
FearlessFuture

Ich fange gerade mit Python an. Ich lese Zed Shaws Buch "Learn Python the Hard Way", das die Python-Version 2.x erfordert, aber auch eine Klasse belegt, die Python 3.x erfordert

Also hier ist was ich getan habe. 

  1. Laden Sie python 2.7 herunter
  2. run Power Shell (sollte bereits unter Windows installiert sein)
  3. python IN POWERSHELL ausführen (wenn es nicht erkannt wird, fahren Sie mit Schritt 4 fort)
  4. Nur wenn Powershell Python 2.7nicht erkennt, geben Sie Folgendes ein: 

"[UMGEBUNG] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C:\PYTHON27 "," USER ")" (Keine externen Anführungszeichen)

  1. Jetzt tippen Sie Python und Sie sollten sehen, wie es Python 2.7 blah blah blah sagt

JETZT für Python 3.x

Einfacher Download von Python 3.x wird mit Python für Windows-App geliefert. SO Fügen Sie einfach die Python für Windows-App in Ihre Taskleiste ein oder erstellen Sie eine Verknüpfung zum Desktop, und Sie sind fertig!

Öffnen Sie Python für Windows für 3.x

Powershell für Python 2.x öffnen

Ich hoffe das hilft!

0
Davidopopoplis

Ich würde davon ausgehen, dass ich Python 2.4, 2.5 und 2.6 nebeneinander auf demselben Computer installiert habe.

0
Dan