Bisakah saya menginstal Python 3.x dan 2.x di komputer Windows yang sama?

156

Saya menjalankan Windows dan shell / OS secara otomatis menjalankan Python berdasarkan pengaturan registri ketika Anda menjalankan program di baris perintah. Apakah ini akan rusak jika saya menginstal versi Python 2.x dan 3.x pada mesin yang sama?

Saya ingin bermain dengan Python 3 sementara masih bisa menjalankan skrip 2.x pada mesin yang sama.

minty
sumber
1
Di distro saya, Fedora, menginstal Python 2.7 at /usr/bin/pythondan Python 3.3 at /usr/bin/python3. Memberi nama berbeda untuk Python3's Pip dan IPython juga. Sangat berguna.
Kolonel Panic
19
@ pengguna - Dalam semangat saya setuju dengan tanggapan Anda, tetapi saya telah dibakar oleh roh itu berkali-kali sehingga saya mengerti mengapa seseorang bertanya sebelum membuat lompatan.
Peter Hanley
Jawaban di sini sepertinya adalah semua tentang bagaimana memilih python mana yang akan dijalankan. Masalah saya adalah bahwa penginstal (3.6.2) tidak akan berjalan karena dikatakan "Versi lain dari produk ini sudah diinstal." Ternyata saya sudah menginstal 3.6.3.
yoyo

Jawaban:

66

Solusi resmi untuk koeksistensi tampaknya adalah Peluncur Python untuk Windows , PEP 397 yang termasuk dalam Python 3.3.0 . Menginstal dump rilis py.exedan pyw.exepeluncur ke %SYSTEMROOT%( C:\Windows) yang kemudian dikaitkan dengan pydan pywskrip.

Untuk menggunakan peluncur baru (tanpa mengatur asosiasi Anda sendiri secara manual), biarkan opsi "Register Extensions" diaktifkan. Saya tidak begitu yakin mengapa, tetapi pada mesin saya itu meninggalkan Py 2.7 sebagai "default" (dari peluncur).

Menjalankan skrip dengan memanggil mereka langsung dari baris perintah akan merutekannya melalui peluncur dan mengurai shebang (jika ada). Anda juga dapat secara eksplisit menyebut peluncur dan penggunaan switch: py -3 mypy2script.py.

Segala macam kebiasaan tampaknya berhasil

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

serta pelanggaran sewenang-wenang

  • #! notepad.exe
Nick T
sumber
"Mereka" benar-benar harus menyertakan pylauncher dengan distribusi Python 2 saat ini untuk Windows (atau membuat orang lebih sadar itu tersedia dan di mana mendapatkannya sendiri).
martineau
1
Mungkin, tetapi jika Anda hanya hidup di dunia Python 2 itu tidak terlalu besar.
Nick T
Peluncur ini tersedia sebagai program mandiri setidaknya sejak pertengahan 2012.
Smit Johnth
1
@Mooncrater Anda dapat memeriksa yang akan digunakan dengan where.exe pip. Saya pikir installer Python 3 menginstal pip3alias untuk pip-nya, tetapi Anda juga bisa melakukan sesuatu seperti yang py -3 -m pip install requestssaya kira.
Nick T
41

Inilah pengaturan saya:

  1. Instal kedua Python 2.7 dan 3.4 dengan installer windows .
  2. Pergi ke C:\Python34(jalur instal default) dan ubah python.exe ke python3.exe
  3. Edit variabel lingkungan Anda untuk dimasukkanC:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

Sekarang di baris perintah Anda dapat menggunakan pythonuntuk 2.7 dan python3untuk 3.4.

Alistair Martin
sumber
3
Bagaimana dengan, misalnya, pipdi cli?
Christian
3
Versi terbaru dari python 2 & 3 dikirimkan bersama pip. Jadi Anda bisa menggunakan pipdan pip3masing - masing.
Alistair Martin
8
Saya hanya menunjukkan bahwa Anda akhirnya harus mengubah nama semua utilitas ini. Bahkan kemudian, ada risiko bahwa hal-hal rusak jika, misalnya, python3 secara eksplisit (misalnya: hard coded) memanggil pip dan bukan pip3.
Christian
Itu ide yang buruk, akan berakhir mengganti nama segalanya dan pip tidak bekerja seperti itu.
Bhansa
untuk berhenti berlari ke masalah pip di python3. Anda perlu UNSLECT "install pip" dari wizard instllation python3 awal, lalu ganti nama python3.7 / python.exe menjadi python3.exe, MAKA unduh get-pip.py dan jalankan python3.exe get-pip.py. Jadi pip3 tahu python3.exe berganti nama adalah untuk python3 bukan yang asli /python3.7/python.exe
Junchen Liu
36

Anda dapat menginstal keduanya.

Anda harus menulis ini di depan skrip Anda:

#!/bin/env python2.7

atau, pada akhirnya ...

#!/bin/env python3.6

Memperbarui

Solusi saya berfungsi sempurna dengan Unix, setelah pencarian cepat di Google , berikut adalah solusi Windows:

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

Hal yang sama: di depan skrip Anda.

Patrick Desjardins
sumber
WEll, bisa diinstal di Linux, dan bisa juga di Windows. Anda hanya perlu mengatur variabel env .. Anda dapat melakukannya di Windows ...
Patrick Desjardins
7
Solusi ini tidak akan bekerja dengan windows (kecuali Anda menyebutnya dari shell gaya unix (mis. Cygwin)). #! ditangani oleh shell, dan windows tidak mendukungnya. Saya percaya pada contoh Anda googled itu sedang ditangani oleh server web, bukan dari diluncurkan di windows
Brian
Ya, di Apache pada Windows ... shell permintaan pertanyaan secara otomatis, Anda dapat melakukannya dengan Cygwin, Apache, dll ...
Patrick Desjardins
@Daok: Saya tidak menurunkan suara Anda. Saya berterima kasih atas bantuan bahkan upaya untuk membantu.
minty
4
Satu dapat menggunakan pylauncher untuk membuat sesuatu seperti pekerjaan ini (seperti yang dijelaskan dalam PEP 397 - peluncur Python untuk Windows pada tahun 2011.
martineau
33

Dari versi 3.3, Python memperkenalkan utilitas Launcher untuk Windows https://docs.python.org/3/using/windows.html#python-launcher-for-windows .

Jadi untuk dapat menggunakan beberapa versi Python:

  1. instal Python 2.x (x adalah versi apa pun yang Anda butuhkan)
  2. instal Python 3.x (x adalah versi apa pun yang Anda perlukan juga Anda harus memiliki satu versi 3.x> = 3.3)
  3. buka Command Prompt
  4. ketik py -2.x untuk meluncurkan Python 2.x
  5. Tipe py -3.x untuk meluncurkan Python 3.x
Ivan Kucerak
sumber
1
Bagaimana dengan orang yang menggunakan IDE? Apakah ini berhasil juga?
emorphus
1
@emorphus Saya kira tergantung pada IDE tetapi secara umum Anda harus dapat memilih versi interpreter. Jadi jika Anda memiliki beberapa versi Python yang terinstal, pilih saja yang ingin Anda gunakan dalam proyek Anda. Terminal di IDE juga berfungsi sama dengan command prompt sehingga perintah-perintah itu juga harus bekerja di sana.
Ivan Kucerak
2
Ini adalah solusi IMO terbaik, ini berfungsi dengan sempurna sejak awal. Tidak perlu memiliki -3.x yang bisa Anda lakukan py -3 filename.py.
OmegaNalphA
9

Saya menggunakan 2.5, 2.6, dan 3.0 dari shell dengan satu skrip batch dari formulir:

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

Beri nama pythonX.Y.batdan letakkan di suatu tempat di PATH Anda. Salin file untuk versi minor pilihan (yaitu yang terbaru) ke pythonX.bat. (Misalnya copy python2.6.bat python2.bat.) Kemudian Anda dapat menggunakannya python2 file.pydari mana saja.

Namun, ini tidak membantu atau bahkan mempengaruhi situasi asosiasi file Windows. Untuk itu, Anda memerlukan program peluncur yang membaca #!baris, dan kemudian mengaitkannya dengan file .py dan .pyw.

Komunitas
sumber
Lihat komentar saya tentang jawaban Patrick Desjardins.
martineau
8

Ketika Anda menambahkan kedua untuk variabel lingkungan ada akan konflik karena kedua executable memiliki nama yang sama: python.exe.

Cukup ganti nama salah satunya. Dalam kasus saya, saya menamainya menjadi python3.exe.

Jadi ketika saya menjalankannya pythonakan menjalankan python.exeyang 2.7 dan ketika saya menjalankannya python3akan mengeksekusi python3.exeyang 3.6

masukkan deskripsi gambar di sini

Charif DZ
sumber
Bisakah Anda menjelaskan bagian not? Ketika saya mengganti nama python menjadi python3, saya tidak bisa lagi menjalankan pip karena sepertinya pip.exe, pip3.exe dan pip3.7.exe semuanya tergantung pada python.exe. Ketika saya menjalankan pip, saya mendapatkan error => 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
Saya tidak tahu saya tidak memiliki masalah ini
Charif DZ
@MandarSadye Anda dapat membuka pip.exe di notepad dan mencari python.exe .. Lalu ganti python.exe dengan python3.exe
atg
7

Ini dia ...

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)

Saya baru saja mengetuk ini saat membaca utas ini (karena itulah yang saya butuhkan juga). Saya memiliki Piton 2.6.1 dan 3.0.1 di Ubuntu dan Windows. Jika tidak berhasil, Anda memposting perbaikan di sini.


sumber
1
Akan lebih baik digunakan sys.exit(process.returncode)untuk menyebarkan status keluar dari skrip yang dipanggil ke pemanggil.
martineau
4

Sejauh yang saya tahu Python lari dari commandline menggunakan variabel PATH yang bertentangan dengan pengaturan registri.

Jadi, jika Anda menunjuk ke versi yang benar pada PATH Anda, Anda akan menggunakannya. Ingatlah untuk memulai kembali prompt perintah Anda untuk menggunakan pengaturan PATH baru.

James McMahon
sumber
Ini benar jika Anda mengetikkan 'python myscript.py', Anda kemudian dapat mengetikkan C: \ python30 \ python.exe, tetapi command prompt melakukan ini secara otomatis jika Anda cukup mengetik myscript.py dan saya tidak ingin memecahkan 2. ? skrip jika saya menginstal 3.0 pada mesin yang sama.
minty
Oh dan mintalah membantu untuk menambahkan informasi dalam komentar pertama Anda ke pertanyaan, itu sedikit samar-samar.
James McMahon
3

Instalasi Python biasanya dikaitkan .py, .pywdan .pycfile dengan juru bahasa Python. Jadi Anda dapat menjalankan skrip Python dengan mengklik dua kali di Explorer atau dengan mengetik namanya di jendela baris perintah (jadi tidak perlu mengetik python scriptname.py, cukup scriptname.pylakukan).

Jika Anda ingin mengubah asosiasi ini secara manual, Anda dapat mengedit kunci ini di registri Windows:

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

Peluncur Python

Orang-orang telah bekerja pada peluncur Python untuk Windows: program ringan yang terkait dengan .pydan .pywfile yang akan mencari garis "shebang" (mirip dengan Linux et al) pada baris pertama, dan meluncurkan Python 2.x atau 3.x sebagai yg dibutuhkan. Lihat posting blog "Peluncur Python untuk Windows" untuk detailnya.

Craig McQueen
sumber
3

Coba gunakan Anaconda.

Menggunakan konsep lingkungan Anaconda, katakanlah Anda memerlukan Python 3 untuk belajar pemrograman, tetapi Anda tidak ingin menghapus lingkungan Python 2.7 Anda dengan memperbarui Python. Anda dapat membuat dan mengaktifkan lingkungan baru bernama "ular" (atau apa pun yang Anda inginkan), dan menginstal versi terbaru Python 3 sebagai berikut:

conda create --name snakes python=3

Ini lebih sederhana daripada kedengarannya, lihat halaman intro di sini: Memulai dengan Anaconda

Dan kemudian untuk menangani masalah spesifik Anda memiliki versi 2.x dan 3.x berjalan berdampingan, lihat: Mengelola Versi Python dengan Anaconda

Cale Sweeney
sumber
Tautan intro Anaconda rusak.
alex
1
Memperbaiki tautan ke 'Memulai dengan Anaconda'.
Cale Sweeney
2
@ JeffreyCordero saya memperbaiki tautannya. Anaconda docs dapat dijalankan, tetapi mereka tidak bisa bersembunyi.
Cale Sweeney
2

Berikut ini cara menjalankan Python 2 dan 3 pada mesin yang sama

  1. instal Python 2.x
  2. instal Python 3.x
  3. Mulai Powershell
  4. Ketik Python -2 untuk meluncurkan Python 2.x
  5. Ketik Python -3 untuk meluncurkan Python 2.x

The Python Launcher untuk Windows tertanam dalam Python sejak versi 3.3, seperti yang dijanjikan pada 2011 ketika Stand sendiri pertama memulai debutnya:

Python Launcher untuk Windows

rogerwamba
sumber
Bagaimana dengan orang yang menggunakan IDE? Apakah ini berhasil juga?
emorphus
2

Berikut ini adalah cara yang rapi dan bersih untuk menginstal Python2 & Python3 di windows.

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

Kasus saya: Saya harus menginstal Apache cassandra. Saya sudah menginstal Python3 di drive D: saya . Dengan banyak pekerjaan pengembangan dalam proses saya tidak ingin mengacaukan instalasi Python3 saya. Dan, saya butuh Python2 hanya untuk Apache cassandra.

Jadi saya mengambil langkah-langkah berikut:

  1. Diunduh & Dipasang Python2.
  2. Menambahkan entri Python2 ke classpath ( C:\Python27;C:\Python27\Scripts)
  3. Dimodifikasi python.exe ke python2.exe (seperti yang ditunjukkan pada gambar di bawah)

masukkan deskripsi gambar di sini

  1. Sekarang saya bisa menjalankan keduanya. Untuk Python 2 ( python2 --version) & Python 3 ( python --version). masukkan deskripsi gambar di sini

Jadi, instalasi Python3 saya tetap utuh.

Alex
sumber
1

Saya pikir ada opsi untuk mengatur asosiasi file windows untuk file .py di installer. Hapus centang dan Anda harus baik-baik saja.

Jika tidak, Anda dapat dengan mudah mengaitkan kembali file .py dengan versi sebelumnya. Cara paling sederhana adalah dengan mengklik kanan pada file .py, pilih "buka dengan" / "pilih program". Pada dialog yang muncul, pilih atau ramban ke versi python yang ingin Anda gunakan secara default, dan centang kotak "selalu gunakan program ini untuk membuka jenis file ini".

Brian
sumber
Inilah yang saya lakukan. Saya masih memiliki 2.5.2 dan 3.0.1 di kotak Windows Vista saya. Saya menghapus centang pada Wisaya instal (mungkin mengatakan sesuatu seperti "Daftar dengan sistem" - Saya lupa). Keduanya bekerja dengan baik. Untuk hal-hal baris perintah, saya meletakkan file py.bat di jalur saya yang memulai python 3 - tidak ada yang mewah, tetapi melakukan apa yang saya butuhkan.
Anon
1

Anda harus memastikan bahwa variabel lingkungan PATH tidak mengandung kedua file python.exe (tambahkan yang saat ini Anda gunakan untuk menjalankan skrip setiap hari), atau lakukan seperti yang disarankan Kniht dengan file batch. Selain itu, saya tidak mengerti mengapa tidak.

PS: Saya sudah menginstal 2.6 sebagai python "primer" dan 3.0 sebagai python "play" . 2.6 disertakan dalam PATH . Semuanya bekerja dengan baik.

Geo
sumber
1

Sebelum saya menginstal keduanya secara bersamaan dengan berani, saya punya banyak pertanyaan. Jika saya memberi python apakah itu akan pergi ke py3 ketika saya ingin py2? pip / virtualenv akan terjadi di bawah py2 / 3?

Tampaknya sangat sederhana sekarang.

Instal secara membabi buta keduanya. Pastikan Anda mendapatkan jenis yang tepat (x64 / x32). Saat / setelah menginstal pastikan Anda menambahkan path ke variabel lingkungan Anda .

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

Ganti x pada perintah di atas untuk mengatur path.

Lalu buka kedua folder tersebut.

Navigasi ke

python3.6/Scripts/

dan ganti nama pip ke pip3.

Jika pip3 sudah ada hapus pip. Ini akan memastikan bahwa hanya pip yang akan berjalan di bawah python2 . Anda dapat memverifikasi dengan:

pip --version

Jika Anda ingin menggunakan pip dengan python3 maka gunakan saja

pip3 install 

Anda juga dapat melakukan hal yang sama pada file python dan lainnya.

Bersulang!

Shreyaa Sridhar
sumber
1

Mudah-peasy, setelah menginstal kedua versi python menambahkan path ke variabel lingkungan; lihat pengaturan variabel lingkungan. Kemudian pergi ke folder python 2 dan python 3 dan beri nama masing-masing ke python2 dan python3 seperti yang ditunjukkan di sini untuk python2dan di sini untuk python3. Sekarang dalam tipe cmd python2 atau python3 untuk menggunakan versi yang diperlukan Anda lihat sini.

nilakantha singh deo
sumber
0

Saya berasumsi demikian, saya memiliki Python 2.4, 2.5 dan 2.6 diinstal berdampingan di komputer yang sama.


sumber
Bahwa pekerjaan saya untuk beberapa versi 2.x, tetapi minty bertanya apakah mereka dapat menjalankan 2.x bersama 3.x. Ada beberapa perbedaan yang signifikan antara keduanya. Lihat: Perbedaan Antara 2.x dan 3.x
Cale Sweeney
0

Saya baru memulai dengan python sekarang. Saya membaca buku Zed Shaw "Learn Python the Hard Way" yang membutuhkan python versi 2.x tetapi saya juga mengambil kelas yang membutuhkan python 3.x

Jadi inilah yang saya lakukan.

  1. Unduh python 2.7
  2. jalankan power shell (harus sudah diinstal pada windows)
  3. jalankan python IN POWERSHELL (jika tidak mengenali maka lanjutkan ke langkah 4)
  4. Hanya jika PowerShell tidak mengenali tipe python 2.7 dalam berikut ini:

"[LINGKUNGAN] :: SETENVIRONMENTVARIABLE (" PATH "," $ ENV: PATH; C: \ PYTHON27 "," USER ")" (tidak ada tanda kutip di luar)

  1. Sekarang ketik python dan Anda akan melihatnya mengatakan python 2.7 bla bla

SEKARANG untuk python 3.x

Sederhana, unduhan python 3.x dilengkapi dengan aplikasi python untuk windows. SO cukup sematkan aplikasi Python untuk Windows ke bilah tugas Anda, atau buat pintasan ke desktop dan Anda selesai!

Buka Python untuk Windows untuk 3.x

Buka Powershell untuk python 2.x

Saya harap ini membantu!

Davidopopoplis
sumber
0

Hmm..Aku melakukannya sekarang dengan hanya mengunduh Python 3.6.5 untuk Windows di https://www.python.org/downloads/release/python-365/ dan memastikan bahwa peluncur akan diinstal. Kemudian, saya mengikuti instruksi untuk menggunakan python 2 dan python 3. Restart command prompt dan kemudian gunakan py -2.7untuk menggunakan Python 2 dan pyatau py -3.6untuk menggunakan Python 3. Anda juga dapat menggunakan pip2untuk Python 2 pipdan pipuntuk Python 3 pip.

Masa Depan Tak Takut
sumber
0

Saya memiliki masalah yang sama di mana saya ingin menggunakan python3 untuk sebagian besar pekerjaan tetapi diperlukan proA python2. SO, inilah yang saya lakukan.

Saya pertama kali membuat 3 variabel dalam variabel lingkungan pengguna sebagai berikut:

  1. PYTHON_ACTIVE: Ini awalnya kosong
  2. HOME_PYTHON27: Memiliki jalur ke folder tempat Python 2 diinstal. Misalnya. "; / skrip;"
  3. HOME_PYTHON38: Mirip dengan python 2, variabel ini berisi path ke folder python 3.

Sekarang saya menambahkan

% PYTHON_ACTIVE%

ke variabel PATH. Jadi, pada dasarnya mengatakan bahwa apa pun yang mengandung "PYTHON_ACTIVE" ini adalah python aktif. Kami secara terprogram mengubah isi "PYTHON_ACTIVE" untuk mengganti versi python.

Berikut ini contoh skripnya:

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

Skrip ini menggunakan versi python sebagai input dan karenanya menyalin HOME_PYTHON27 atau HOME_PYTHON38 ke PYTHON_ACTIVE. Sehingga mengubah versi Python global.

Mandar Sadye
sumber