Kan ik Python 3.x en 2.x op dezelfde Windows-computer installeren?

Ik gebruik Windows en de shell/OS voert automatisch Python uit op basis van de registerinstellingen wanneer u een programma op de opdrachtregel uitvoert. Gaat dit stuk als ik een 2.x- en 3.x-versie van Python op dezelfde machine installeer?

Ik wil met Python 3 spelen terwijl ik nog steeds 2.x-scripts op dezelfde machine kan uitvoeren.


Antwoord 1, autoriteit 100%

De officiële oplossing voor coëxistentie lijkt de Python Launcher voor Windowste zijn , PEP 397 die is opgenomen in Python 3.3.0. Installatie van de release dumpt py.exeen pyw.exelaunchers in %SYSTEMROOT%(C:\Windows) die vervolgens wordt gekoppeld aan respectievelijk py– en pyw-scripts.

Als u de nieuwe launcher wilt gebruiken (zonder handmatig uw eigen koppelingen ermee in te stellen), laat u de optie “Extensies registreren” ingeschakeld. Ik weet niet precies waarom, maar op mijn computer liet het Py 2.7 als de “standaard” (van de launcher) achter.

Als u scripts uitvoert door ze rechtstreeks vanaf de opdrachtregel aan te roepen, worden ze door het opstartprogramma geleid en wordt de rommel geparseerd (als deze bestaat). Je kunt ook expliciet de launcher aanroepen en schakelaars gebruiken: py -3 mypy2script.py.

Allerlei manieren lijken te werken

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

evenals moedwillige misbruiken

  • #! notepad.exe

Antwoord 2, autoriteit 67%

Dit is mijn configuratie:

  1. Installeer zowel Python 2.7 als 3.4 met de windows-installatieprogramma’s.
  2. Ga naar C:\Python34(het standaard installatiepad) en verander python.exe in python3.exe
  3. Bewerkenuw omgevingsvariabelenom C:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;op te nemen

Nu kun je in de opdrachtregel pythongebruiken voor 2.7 en python3voor 3.4.


Antwoord 3, autoriteit 59%

Vanaf versie 3.3 introduceerde Python Launcher voor Windows-hulpprogramma https ://docs.python.org/3/using/windows.html#python-launcher-for-windows.

Dus om meerdere versies van Python te kunnen gebruiken:

  1. installeer Python 2.x (x is elke versie die je nodig hebt)
  2. installeer Python 3.x (x is elke versie die je nodig hebt, je moet ook een versie 3.x >= 3.3 hebben)
  3. open Opdrachtprompt
  4. typ py -2.xom Python 2.x te starten
  5. typ py -3.xom Python 3.x te starten

Antwoord 4, autoriteit 51%

Je kunt beide hebben geïnstalleerd.

Je moet dit voor je script schrijven:

#!/bin/env python2.7

of, uiteindelijk…

#!/bin/env python3.6

Bijwerken

Mijn oplossing werkt perfect met Unix, na een snelle zoektocht op Google, hier is de Windows-oplossing:

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

Hetzelfde: voor je script.


Antwoord 5, autoriteit 13%

Ik gebruik 2.5, 2.6 en 3.0 uit de shell met batchscripts van één regel van de vorm:

:: 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 %*

Noem ze pythonX.Y.baten plaats ze ergens in je PATH. Kopieer het bestand voor de gewenste secundaire versie (d.w.z. de nieuwste) naar pythonX.bat. (Bijvoorbeeld copy python2.6.bat python2.bat.) Dan kun je python2 file.pyoveral gebruiken.

Dit helpt echter niet of heeft zelfs geen invloed op de Windows-bestandsassociatiesituatie. Daarvoor heb je een opstartprogramma nodig dat de regel #!leest en dat vervolgens koppelt aan .py- en .pyw-bestanden.


Antwoord 6, autoriteit 11%

Als je beide toevoegt aan omgevingsvariabelen, ontstaat er een conflict omdat de twee uitvoerbare bestanden dezelfde naam hebben: python.exe.

Hernoem er gewoon een. In mijn geval heb ik het hernoemd naar python3.exe.

Dus wanneer ik pythonuitvoer, zal het python.exeuitvoeren, wat 2.7 is
en wanneer ik python3uitvoer, zal het python3.exeuitvoeren, wat 3.6 is


Antwoord 7, autoriteit 10%

Hier ga je…

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 __name__ == "__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)

Ik heb dit zojuist op de kop getikt bij het lezen van dit draadje (omdat ik het ook nodig had). Ik heb Pythons 2.6.1 en 3.0.1 op zowel Ubuntu als Windows. Als het voor jou niet werkt, post dan hier de oplossingen.


Antwoord 8, autoriteit 7%

Probeer Anaconda te gebruiken.

Laten we het concept van Anaconda-omgevingen gebruiken, laten we zeggen dat je Python 3 nodig hebt om te leren programmeren, maar je wilt je Python 2.7-omgeving niet vernietigen door Python bij te werken. U kunt een nieuwe omgeving met de naam “snakes” maken en activeren (of wat u maar wilt), en de nieuwste versie van Python 3 als volgt installeren:

conda create --name snakes python=3

Het is eenvoudiger dan het klinkt, bekijk hier de introductiepagina: Aan de slag met Anaconda

En om uw specifieke probleem van het naast elkaar draaien van versie 2.x en 3.x aan te pakken, zie:


Antwoord 9, autoriteit 6%

Voor zover ik weet, werkt Python vanaf de opdrachtregel met behulp van de variabele PATH in plaats van een registerinstelling.

Dus als je naar de juiste versie op je PATH wijst, zul je die gebruiken. Vergeet niet je opdrachtprompt opnieuw te starten om de nieuwe PATH-instellingen te gebruiken.


Antwoord 10, autoriteit 6%

Hier is een nette en schone manier om Python2 & Python3 op Windows.

https://datascience.com.co/how-to-install-python-2-7-and-3-6-in-windows-10-add-python-path-281e7eae62a

Mijn geval:ik moest Apache Cassandra installeren. Ik had Python3 al geïnstalleerd in mijn D: schijf. Met heel veel ontwikkelingswerk in uitvoering, wilde ik mijn Python3-installatie niet verknoeien. En ik had Python2 alleen nodig voor Apache Cassandra.

Dus ik nam de volgende stappen:

  1. Gedownload & Python2 geïnstalleerd.
  2. Python2-vermeldingen toegevoegd aan klassenpad (C:\Python27;C:\Python27\Scripts)
  3. python.exegewijzigd in python2.exe(zoals weergegeven in onderstaande afbeelding)

  1. Nu kan ik beide uitvoeren. Voor Python 2(python2 --version) & Python 3 (python --version).

Dus mijn Python3-installatie bleef intact.


Antwoord 11, autoriteit 4%

De Python-installatie koppelt normaal gesproken .py-, .pyw– en .pyc-bestanden aan de Python-interpreter. U kunt dus een Python-script uitvoeren door erop te dubbelklikken in Verkenner of door de naam ervan in een opdrachtregelvenster te typen (u hoeft dus niet python scriptname.pyte typen, alleen scriptname.pyzal doen).

Als u deze koppeling handmatig wilt wijzigen, kunt u deze sleutels in het Windows-register bewerken:

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

Mensen hebben gewerkt aan een Python-launcher voor Windows: een lichtgewicht programma dat is gekoppeld aan .pyen .pywbestanden die op zoek zouden zijn naar een “Shebang” -lijn (vergelijkbaar naar Linux et al) op de eerste regel en start Python 2.x of 3.x zoals vereist. Zie “een python launcher voor Windows” blog post voor details.


12, Autoriteit 3%

Hier is het uitvoeren van Python 2 en 3 op dezelfde machine

  1. Installeer Python 2.x
  2. Installeer Python 3.x
  3. Start Powershell
  4. type python -2 om Python 2.x
  5. te starten

  6. type python -3 om Python 2.x
  7. te starten

De Python-launcher voor Windows was sinds versie 3.3 in Python ingebed in Python, zoals beloofd in 2011 wanneer de stand alleen eerst zijn debuut maakte:

Python Launcher voor Windows


13

Ik denk dat er een optie is om de Windows-associatie in te stellen voor .py-bestanden in het installatieprogramma. Schakel het uit en het komt goed.

Zo niet, dan kunt u eenvoudig. Py-bestanden opnieuw associëren met de vorige versie. De eenvoudigste manier is om met de rechtermuisknop op een .py-bestand te klikken, selecteert u “Openen met” / “Kies Programma”. Selecteer of bladeren naar de versie van Python die u wilt gebruiken en selecteert u het selectievakje “Altijd gebruikt u om dit soort bestandsnede te gebruiken” om het selectievakje van deze soort bestand “te openen.


14

Je moet ervoor zorgen dat de PATH-omgevingsvariabele niet beide python.exe-bestanden bevat ( voeg degene toe die je momenteel gebruikt om dagelijks scripts uit te voeren ), of doe wat Kniht voorstelde met de batchbestanden .
Afgezien daarvan zie ik niet in waarom niet.

P.S: ik heb 2.6 geïnstalleerd als mijn “primaire”python en 3.0 als mijn “play”python . De 2.6 is opgenomen in het PATH. Alles werkt prima.


Antwoord 15

Voordat ik beide tegelijk moedig installeerde, had ik zoveel vragen. Als ik python geef, gaat het dan naar py3 als ik py2 wil? pip/virtualenv gebeurt onder py2/3?

Het lijkt nu heel eenvoudig.

Installeer ze gewoon blindelings allebei. Zorg ervoor dat u het juiste type (x64/x32) gebruikt.
Zorg er tijdens/na de installatie voor dat u het pad toevoegt aan uw omgevingsvariabelen.

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

Vervang de x in het bovenstaande commando om het pad in te stellen.

Ga vervolgens naar beide mappen.

Navigeer naar

python3.6/Scripts/

en hernoem pip naar pip3.

Als pip3 al bestaat, verwijder dan de pip. Dit zorgt ervoor dat alleen pip wordt uitgevoerd onder python2. U kunt verifiëren door:

pip --version

Als je pip wilt gebruiken met python3, gebruik dan gewoon

pip3 install 

U kunt op dezelfde manier hetzelfde doen met Python-bestand en anderen.

Cheers!


16

Easy-Peasy, na het installeren van beide Python-versies voegt de paden toe aan de omgevingsvariabelen; zie . Ga dan naar Python 2 en Python 3-mappen en hernoem ze respectievelijk naar Python2 en Python3 zoals weergegeven en . Nu in CMD Type Python2 of Python3 om uw vereiste versie te gebruiken, zie .


17

Ik zou ervan uitgaan, ik heb Python 2.4, 2.5 en 2.6 naast elkaar geïnstalleerd op dezelfde computer.


Antwoord 18

Hmm..Ik heb dit nu gedaan door Python 3.6.5 voor Windows te downloaden op https://www.python.org/downloads/release/python-365/en zorgde ervoor dat het opstartprogramma zou worden geïnstalleerd. Daarna volgde ik de instructies voor het gebruik van python 2 en python 3. Start de opdrachtprompt opnieuw en gebruik vervolgens py -2.7om Python 2 en pyof py -3.6om Python 3 te gebruiken. Je kunt ook pip2gebruiken voor pipvan Python 2 en pipvoor pip.


Antwoord 19

Ik had hetzelfde probleem waarbij ik python3 voor het meeste werk wilde gebruiken, maar voor IDA pro was python2 vereist. DUS, dit is wat ik deed.

Ik heb eerst als volgt 3 variabelen in de gebruikersomgevingsvariabele gemaakt:

  1. PYTHON_ACTIVE: Dit is aanvankelijk leeg
  2. HOME_PYTHON27 : Heeft een pad naar een map waar Python 2 is geïnstalleerd. bijv. “;/scripts;”
  3. HOME_PYTHON38: Net als bij python 2 bevat deze variabele een pad naar python 3-mappen.

Nu heb ik

. toegevoegd

%PYTHON_ACTIVE%

naar PATH-variabele. Dus eigenlijk zeggen dat wat deze “PYTHON_ACTIVE” ook bevat, de actieve python is. We wijzigen programmatisch de inhoud van “PYTHON_ACTIVE” om van python-versie te wisselen.

Hier is het voorbeeldscript:

:: This batch file is used to switch between python 2 and 3.
@ECHO OFF
set /p choice= "Please enter '27' for python 2.7 , '38' for python 3.8 : "
IF %choice%==27 (
setx PYTHON_ACTIVE %HOME_PYTHON27%
)
IF %choice%==38 (
setx PYTHON_ACTIVE %HOME_PYTHON38%
)
PAUSE

Dit script neemt de Python-versie als invoer en kopieert dienovereenkomstig HOME_PYTHON27 of HOME_PYTHON38 naar PYTHON_ACTIVE. Dus de globale Python-versie wijzigen.

Other episodes