Python 3.x ve 2.x'i aynı Windows bilgisayara yükleyebilir miyim?


156

Windows çalıştırıyorum ve komut satırında bir program çalıştırdığınızda kabuk / OS otomatik olarak kayıt defteri ayarlarına göre Python çalıştırır. Aynı makineye Python'un 2.x ve 3.x sürümünü yüklersem bu kırılır mı?

Aynı makinede 2.x komut dosyalarını çalıştırarak Python 3 ile oynamak istiyorum.


1
Dağıtımımda Fedora, Python 2.7 at /usr/bin/pythonve Python 3.3 at /usr/bin/python3. Python3'ün Pip ve IPython'larına da farklı isimler verir. Çok kullanışlı.
Albay Panik

19
@user - Ruh olarak yanıtınıza katılıyorum, ama o ruh tarafından o kadar çok yakıldım ki, birisinin sıçramayı yapmadan önce neden sorduğunu anlıyorum.
Peter Hanley

Buradaki cevaplar, hangi python'un ne zaman çalıştırılacağını seçmekle ilgili gibi görünüyor. Benim sorunum yükleyici (3.6.2) "Bu ürünün başka bir sürümü zaten yüklü" diyor çünkü çalışmaz oldu. 3.6.3 kurulu olduğu ortaya çıktı.
Yoyo

Yanıtlar:


66

Birlikte yaşama için resmi bir çözüm gibi görünüyor Windows için Python Fırlatıcı dahil, PEP 397 Python 3.3.0 . Serbest bırakma dökümlerini py.exeve pyw.exebaşlatıcıları %SYSTEMROOT%( C:\Windows) içine daha sonra sırasıyla pyve pywkomut dosyaları ile ilişkilendirilir .

Yeni başlatıcıyı kullanmak için (kendi ilişkilendirmelerinizi manuel olarak ayarlamadan), "Uzantıları Kaydet" seçeneğini etkin bırakın. Neden olduğundan tam olarak emin değilim, ancak makinemde Py 2.7'yi "varsayılan" (başlatıcı) olarak bıraktı.

Komut dosyalarını doğrudan komut satırından çağırarak çalıştırmak, başlatıcı üzerinden yönlendirir ve (varsa), kesimi ayrıştırır. Ayrıca, açıkça başlatıcısı ve kullanım anahtarları çağırabilirsiniz: py -3 mypy2script.py.

Her şekilde shebangs çalışıyor gibi görünüyor

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

ahlaksız istismarların yanı sıra

  • #! notepad.exe

"Onlar" gerçekten Windows için mevcut Python 2 dağıtımı ile pylauncher içermelidir (veya insanların kullanılabilir olduğunu ve kendilerini nereden edinebileceklerini daha fazla farkında olmalıdır).
martineau

1
Belki de, ama sadece Python 2 dünyasında yaşıyorsanız, bu bir anlaşma kadar büyük değil.
Nick T

Bu başlatıcı en azından 2012'nin ortasından beri bağımsız bir program olarak mevcuttu.
Smit Johnth


1
@Mooncrater ile hangisinin kullanılacağını kontrol edebilirsiniz where.exe pip. Python 3 yükleyicisinin pip3pip için bir takma ad yüklediğini düşünüyorum , ancak py -3 -m pip install requestsdüşündüğüm gibi bir şey de yapabilirsiniz .
Nick T

41

İşte kurulumum:

  1. Hem Python 2.7 hem de 3.4'ü Windows yükleyicileriyle yükleyin .
  2. Git C:\Python34python3.exe için (varsayılan yolu yüklemek) ve değişim python.exe
  3. Edit ortam değişkenlerini dahil etmekC:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

Şimdi komut satırında python2.7 ve python33.4 için kullanabilirsiniz .


3
Örneğin, pipklipten ne haber?
Christian

3
Python 2 & 3'ün en son sürümleri pip ile birlikte gönderilir. Böylece sırasıyla pipve kullanabilirsiniz pip3.
Alistair Martin

8
Sadece tüm bu yardımcı programları yeniden adlandırmak zorunda kalacağınıza işaret ediyordum. O zaman bile, örneğin python3 açıkça (örneğin: sabit kodlu) pip3 değil pip komutunu çağırırsa, işlerin kopma riski vardır.
Christian

Bu kötü bir fikir, her şeyi yeniden adlandırmak ve pip bu şekilde çalışmaz.
17:40

python3 üzerinde pip sorunu içine çalışan durdurmak için. ilk python3 instllation sihirbazından "install pip" UNSLECT gerekir, sonra python3.7 / python.exe python3.exe için yeniden adlandırın, sonra get-pip.py indir ve python3.exe get-pip.py çalıştırın. Yani pip3 yeniden adlandırılan python3.exe python3 için olduğunu biliyor origional /python3.7/python.exe
Junchen Liu

36

Her ikisini de yükleyebilirsiniz.

Bunu betiğinizin önüne yazmalısınız:

#!/bin/env python2.7

ya da sonunda ...

#!/bin/env python3.6

Güncelleme

Çözümüm Google'da hızlı bir arama yaptıktan sonra Unix ile mükemmel bir şekilde çalışıyor , işte Windows çözümü:

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

Aynı şey: senaryonuzun önünde.


WEll, Linux üzerinde kurulabilir ve Windows üzerinde de olabilir. Sadece env değişkenini ayarlamanız gerekiyor .. bunu Windows'da yapabilirsiniz ...
Patrick Desjardins

7
Bu çözüm pencerelerle çalışmaz (eğer bir unix tarzı kabuktan (örneğin cygwin) çağırmazsanız). #! kabuk tarafından işlenir ve pencereler bunu desteklemez. Ben googled örnek inanıyorum, windows başlatıldığında değil , web sunucusu tarafından ele alınmaktadır
Brian

Evet, Windows'ta Apache'de ... soru isteği kabuğu otomatik olarak Cygwin, Apache, vb. İle yapabilirsiniz ...
Patrick Desjardins

@Daok: Seni küçümsemedim. Yardım girişiminde bile yardım için minnettarım.
minty

4
Bu çalışma gibi bir şey yapmak için pylauncher kullanılabilir ( 2011'de Windows için PEP 397 - Python başlatıcısında açıklandığı gibi .
martineau

33

3.3 sürümünden itibaren Python, Windows için Launcher yardımcı programını https://docs.python.org/3/using/windows.html#python-launcher-for-windows tanıttı .

Python'un birden fazla sürümünü kullanabilmek için:

  1. Python 2.x'i yükleyin (x, ihtiyacınız olan herhangi bir sürümdür)
  2. install Python 3.x (x ihtiyacınız olan herhangi bir sürümdür, ayrıca bir sürüm 3.x> = 3.3'e sahip olmanız gerekir)
  3. Açık Komut İstemi
  4. yazın py -2.x Python 2.x başlatmak için
  5. yazın py -3.x Python 3.x başlatmak için

1
IDE kullanan insanlar ne olacak? Bu da işe yarıyor mu?
emorphus

1
@emorphus Sanırım IDE'ye bağlı, ancak genel olarak tercüman sürümünü seçebilmelisiniz. Birden fazla Python sürümünün kurulu olması durumunda projenizde kullanmak istediğiniz sürümü seçin. Ayrıca IDE'deki terminal komut istemiyle aynı şekilde çalışır, böylece bu komutların da orada çalışması gerekir.
Ivan Kucerak

2
Bu en iyi IMO çözümüdür, hareket halindeyken mükemmel çalışır. Sadece yapabileceğiniz -3.x'e ihtiyacınız yok py -3 filename.py.
OmegaNalphA

9

Formun bir satır toplu komut dosyalarıyla kabuktan 2.5, 2.6 ve 3.0 kullanıyorum:

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

Onları adlandırın pythonX.Y.batve PATH'nizde bir yere koyun. Tercih edilen küçük sürümün (yani en son sürüm) dosyasını kopyalayın pythonX.bat. (Örn copy python2.6.bat python2.bat.) O zaman python2 file.pyher yerden kullanabilirsiniz .

Ancak, bu Windows dosya ilişkilendirme durumuna yardımcı olmaz veya etkilemez. Bunun için #!satırı okuyan bir başlatıcı programına ihtiyacınız olacak ve bunu .py ve .pyw dosyalarıyla ilişkilendireceksiniz.


Bkz yorumumu Patrick Desjardins'in cevabı hakkında.
martineau

8

Her ikisini de ortam değişkenlerine eklediğinizde, iki yürütülebilir dosyanın adı aynı olduğundan bir çakışma olacaktır: python.exe .

Sadece birini yeniden adlandırın. Benim durumumda yeniden adlandırdımpython3.exe .

Yani çalıştırdığımda 2.7 olan pythonçalıştırır python.exeve çalıştırdığımda 3.6 olan python3çalıştırırpython3.exe

resim açıklamasını buraya girin


Lütfen not bölümünü ayrıntılı olarak açıklar mısınız? Python'u python3 olarak yeniden adlandırdığımda, pip.exe, pip3.exe ve pip3.7.exe dosyalarının tümü python.exe'ye bağlı olduğu için artık pip'i çalıştıramıyorum. Pip çalıştırdığımda hata => alıyorum Fatal error in launcher: Unable to create process using '"c:\users\<my_username>\appdata\local\programs\python\python37-32\python.exe" "C:\Users\<my_username>\AppData\Local\Programs\Python\Python37-32\Scripts\pip.exe" '.
Mandar Sadye

Bu sorunum olmadığını bilmiyorum
Charif DZ

@MandarSadye pip.exe dosyasını not defterinde açabilir ve python.exe dosyasını arayabilirsiniz. Sonra python.exe dosyasını python3.exe ile değiştirin
atg

7

Hadi bakalım...

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)

Ben sadece bu konu okuma üzerine çaldı ettik (çünkü bu da ihtiyacım olan şey). Hem Ubuntu hem de Windows üzerinde Pythons 2.6.1 ve 3.0.1 var. Sizin için işe yaramazsa, düzeltmeleri buraya gönderin.


1
sys.exit(process.returncode)Çağrılan komut dosyasının çıkış durumunu arayana yaymak için kullanmak daha iyi olur .
martineau

4

Bildiğim kadarıyla Python bir kayıt defteri ayarının aksine PATH değişkenini kullanarak komut satırından çalışır.

Eğer PATH'inizde doğru sürüme işaret ederseniz, bunu kullanacaksınız. Yeni PATH ayarlarını kullanmak için komut isteminizi yeniden başlatmayı unutmayın.


'Python myscript.py' yazarsanız, bunun yerine C: \ python30 \ python.exe yazabilirsiniz, ancak myscript.py yazdığınızda ve 2'yi kırmak istemiyorsanız komut istemi bunu otomatik olarak yapar. ? aynı makineye 3.0 yüklerseniz komut dosyaları.
minty

Oh ve naneli soruya ilk yorumunuzdaki bilgileri eklemenize yardımcı olabilir, biraz nebulous oldu.
James McMahon

3

Python kurulumu normalde ilişkilendiren .py, .pywve .pycPython yorumlayıcısı ile dosyaları. Eğer Explorer'da çift tıklayarak ya da (tip gerek böylece bir komut satırı penceresinde adını yazarak ya bir Python komut dosyası çalıştırabilirsiniz Yani python scriptname.py, sadece scriptname.pyyapacağız).

Bu ilişkilendirmeyi el ile değiştirmek istiyorsanız, Windows anahtarlarını bu anahtarları düzenleyebilirsiniz:

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 Başlatıcı

İnsanlar Windows için bir Python başlatıcısı çalışıyoruz: hafif bir program ile ilişkili .pyve .pywolarak Python 2.x veya 3.x ilk satırda (Linux vd benzer) bir "shebang" satırında arar ve başlatacaklarını dosyalar gereklidir. Ayrıntılar için bkz. "Windows için Python Başlatıcısı" blog yazısı.


3

Anaconda kullanmayı deneyin.

Anaconda ortamları kavramını kullanarak, programlamayı öğrenmek için Python 3'e ihtiyacınız olduğunu, ancak Python'u güncelleyerek Python 2.7 ortamınızı silmek istemediğinizi varsayalım. "Yılanlar" (veya ne istersen) adlı yeni bir ortam oluşturabilir ve etkinleştirebilir ve Python 3'ün en son sürümünü aşağıdaki gibi yükleyebilirsin:

conda create --name snakes python=3

Göründüğünden daha basit, buradaki giriş sayfasına bir göz atın: Anaconda'ya Başlarken

Ardından, sürüm 2.x ve 3.x'in yan yana çalışmasına ilişkin özel sorununuzu ele almak için bkz: Anaconda ile Python Sürümlerini Yönetme


Anaconda giriş bağlantısı kopuk.
alex

1
'Anaconda'ya Başlarken' bağlantısı düzeltildi.
Cale Sweeney

2
@JeffreyCordero Bağlantıyı düzelttim. Anaconda belgeleri çalışabilir, ancak gizlenemezler.
Cale Sweeney

2

Python 2 ve 3'ü aynı makinede nasıl çalıştıracağınız aşağıda açıklanmıştır

  1. Python 2.x'i yükleyin
  2. Python 3.x'i yükleyin
  3. Powershell'i başlat
  4. Türü Python -2 Python 2.x başlatmak için
  5. Tip Python -3 Python 2.x başlatmak için

Windows için Python Fırlatıcı yalnız Standı ilk olarak başlangıcını yapınca 2011 yılında söz verdiği gibi, Sürüm 3.3 beri Python içine gömülü edilmiştir:

Windows için Python Launcher


IDE kullanan insanlar ne olacak? Bu da işe yarıyor mu?
emorphus

2

Python2 ve Python3'ü pencerelere kurmanın düzgün ve temiz bir yolu.

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

Benim durumum: Apache Cassandra'yı kurmak zorunda kaldım. D: sürücümde zaten Python3 yüklü . Sürecin altındaki geliştirme çalışmaları ile Python3 kurulumumu bozmak istemedim. Ve, sadece Apache cassandra için Python2'ye ihtiyacım vardı.

Bu yüzden aşağıdaki adımları attım:

  1. İndirilen ve Yüklenen Python2.
  2. Classpath ( C:\Python27;C:\Python27\Scripts) öğesine Python2 girişleri eklendi
  3. Modifiye python.exe için python2.exe (aşağıdaki resimde gösterildiği gibi)

resim açıklamasını buraya girin

  1. Şimdi ikisini de çalıştırabiliyorum. Python 2 ( python2 --version) ve Python 3 ( python --version) için. resim açıklamasını buraya girin

Python3 kurulumum sağlam kaldı.


1

Yükleyicide .py dosyaları için Windows dosya ilişkilendirmesini ayarlama seçeneği olduğunu düşünüyorum. İşaretini kaldırın ve iyi olmalısınız.

Değilse, .py dosyalarını önceki sürümle kolayca yeniden ilişkilendirebilirsiniz. En basit yol .py dosyasına sağ tıklamak, "ile aç" / "program seç" i seçmektir. Görüntülenen iletişim kutusunda, varsayılan olarak kullanmak istediğiniz python sürümünü seçin veya göz atın ve "bu tür dosyaları açmak için her zaman bu programı kullan" onay kutusunu işaretleyin.


Ben de öyle yaptım. Windows Vista kutumda hala 2.5.2 ve 3.0.1 var. Ben yükleme Sihirbazı ("Sistem ile kayıt" gibi bir şey söylemiş olabilir - işaretini kaldırın) - Unutuyorum). Her ikisi de iyi çalışıyor. Komut satırı şeyler için, yoluma python 3'ü başlatan bir py.bat dosyası koydum - fantezi bir şey yok, ama ihtiyacım olanı yapıyor.
Anon

1

PATH ortam değişkeninin her iki python.exe dosyasını içermediğinden emin olun (günlük olarak komut dosyalarını çalıştırmak için şu anda kullandığınız dosyayı ekleyin) veya toplu iş dosyalarıyla önerilen Kniht gibi yapın. Bunun dışında neden göremiyorum.

PS: 2.6 "birincil" python ve 3.0 "play" python yüklü . 2.6, PATH'a dahildir . Her şey yolunda gidiyor.


1

İkisini aynı anda cesurca kurmadan önce, çok fazla sorum vardı. Python verirseniz py2 istediğimde py3'e gider mi? pip / virtualenv py2 / 3 altında mı olacak?

Şimdi çok basit görünüyor.

Her ikisini de körü körüne takın. Doğru türü aldığınızdan emin olun (x64 / x32). Yüklerken / yükledikten sonra ortam değişkenlerinizin yolunu eklediğinizden emin olun .

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

Yolu ayarlamak için yukarıdaki komuttaki x işaretini değiştirin.

Ardından her iki klasöre de gidin.

Şu yöne rotayı ayarla

python3.6/Scripts/

ve pip'i pip3 olarak yeniden adlandırın.

Pip3 zaten varsa pip'i silin. Bu sadece pip python2 altında çalışmasını sağlayacaktır . Aşağıdakileri doğrulayabilirsiniz:

pip --version

Pip'i python3 ile kullanmak istiyorsanız sadece

pip3 install 

Aynı şeyi python dosyasına ve diğerlerine de yapabilirsiniz.

Şerefe!


1

Kolay-peasy, her iki python sürümünü kurduktan sonra ortam değişkenlerine yollar ekleyin; bkz ortam değişkeni ayarları. Sonra piton 2 ve piton 3 klasörlere gidip gösterildiği gibi sırasıyla python2 ve python3 onları adlandırmak python2 için buradave python3 için buradayız. Şimdi cmd yazın python2 veya python3 gerekli sürümünü kullanmak için bakın buraya.


0

Aynı bilgisayarda Python 2.4, 2.5 ve 2.6'yı yan yana kurduğumu varsayarım.


Bu benim 2.x, ama naneli birden çok sürümü için benim iş 3.x yanında 2.x çalışıp çalışamayacağını soruyor. İkisi arasında bazı önemli farklılıklar vardır. Bakınız: 2.x ve 3.x Arasındaki Farklar
Cale Sweeney

0

Şimdi sadece python ile başlıyorum. Zed Shaw'un "Python'u Zor Yoldan Öğrenin" adlı kitabını python sürüm 2.x gerektiren okuyorum ama aynı zamanda python 3.x gerektiren bir ders alıyorum

İşte yaptığım şey.

  1. Python 2.7 indir
  2. güç kabuğunu çalıştır (zaten pencerelere yüklenmiş olmalıdır)
  3. Python IN POWERSHELL'i çalıştır (tanımazsa 4. adıma geçin)
  4. Yalnızca powershell python 2.7'yi tanımıyorsa aşağıdakileri yazın:

"[ÇEVRE] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C: \ PYTHON27 "," USER ")" (dış teklif yok)

  1. Şimdi python yazın ve bunu görmelisiniz python 2.7 falan filan filan

ŞİMDİ python 3.x için

Basit, python 3.x indir Windows uygulaması için python ile birlikte gelir. Bu yüzden Windows için Python uygulamasını görev çubuğunuza sabitleyin veya masaüstüne kısayol oluşturun ve işiniz bitti!

3.x için Windows için Python'u açın

Python 2.x için Open Powershell

Umarım bu yardımcı olur!


0

Hmm..Şimdi bunu Windows için Python 3.6.5'i https://www.python.org/downloads/release/python-365/ adresinden indirerek yaptım ve başlatıcıyı yükleyeceğimden emin oldum . Sonra, ben piton 2 ve piton durdurun 3. istemi komut kullanmaya yönelik talimatları takip ve sonra kullanmak py -2.7Python 2 kullanımı ve pyya py -3.6da kullanabilirsiniz Python 3. kullanmak pip2Python 2 yıllardan için pipve pipPython 3 yıllardan için pip.


0

Ben en çok iş için python3 kullanmak istedim aynı sorun vardı ama IDA pro python2 gerekli. Yani, işte yaptım.

İlk olarak kullanıcı ortamı değişkeninde şu şekilde 3 değişken oluşturdum:

  1. PYTHON_ACTIVE: Bu başlangıçta boş
  2. HOME_PYTHON27: Python 2'nin yüklü olduğu bir klasör yolu var. Örneğin. ";/Kodlar;"
  3. HOME_PYTHON38: Python 2'ye benzer şekilde, bu değişken python 3 klasörlerine giden bir yol içerir.

Şimdi ekledim

% PYTHON_ACTIVE%

- PATH değişkeni. Yani, temelde bu "PYTHON_ACTIVE" ne içeriyorsa onu aktif python olarak söylemek. Python sürümünü değiştirmek için programlı olarak "PYTHON_ACTIVE" içeriğini değiştiriyoruz.

İşte örnek komut dosyası:

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

Bu komut dosyası python sürümünü girdi olarak alır ve buna göre HOME_PYTHON27 veya HOME_PYTHON38'i PYTHON_ACTIVE klasörüne kopyalar. Böylece global Python versiyonunu değiştiriyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.