Cách cài đặt cả Python 2.x và Python 3.x trong Windows


230

Tôi thực hiện hầu hết chương trình của mình trong Python 3.x trên Windows 7, nhưng bây giờ tôi cần sử dụng Thư viện hình ảnh Python (PIL), ImageMagick và wxPython, tất cả đều yêu cầu Python 2.x.

Tôi có thể cài đặt cả Python 2.x và Python 3.x trong Windows 7 không? Khi tôi chạy một kịch bản, tôi sẽ "chọn" phiên bản Python nào nên chạy nó? Các chương trình nói trên có thể xử lý nhiều phiên bản Python được cài đặt cùng một lúc không? Tôi đã tìm kiếm hàng giờ liền để biết cách làm điều này vô ích.

Cảm ơn.



2
Vâng, như @NickT nói, đó là cách dễ nhất. Thật không may, không có câu trả lời nào dưới đây đưa ra cách tiếp cận đơn giản, dễ hiểu. (Những người đề cập đến phiên bản 3.3 đến gần nhất.) Đối với một câu trả lời tốt hơn, nhìn thấy chiếc được chấp nhận dưới câu hỏi trùng lặp: stackoverflow.com/a/17245543/1593924 Tóm lại, sử dụng "py" mới phóng, có hoặc không có một -3 tham số. Và xem xét thêm shebang (#!) Vào tập lệnh của bạn để bạn không cần tham số.
Jon Coombs

1
Ngoài ra, một số người đã tìm thấy các chi tiết tôi đăng ở đây hữu ích: stackoverflow.com/a/13533958/1593924
Jon Coombs

Câu trả lời:


150

Tôi thấy rằng cách chính thức để làm điều này là như sau:

Chỉ cần cài đặt hai (hoặc nhiều hơn, sử dụng trình cài đặt Python) trên Windows 7 (đối với tôi làm việc với 3.3 và 2.7).

Thực hiện theo các bản dưới đây, thay đổi các tham số cho nhu cầu của bạn.

Tạo biến môi trường sau (để mặc định khi nhấp đúp chuột):

Name:  PY_PYTHON
Value: 3

Để khởi chạy một tập lệnh trong một trình thông dịch cụ thể, hãy thêm shebang sau (bắt đầu tập lệnh):

#! python2

Để thực thi tập lệnh bằng trình thông dịch cụ thể, hãy sử dụng lệnh nhắc sau:

> py -2 MyScript.py

Để khởi chạy một trình thông dịch cụ thể:

> py -2

Để khởi chạy trình thông dịch mặc định (được xác định bởi biến PY_PYTHON):

> py

Tài nguyên

Tài liệu: Sử dụng Python trên Windows

PEP 397 - Trình khởi chạy Python cho Windows


8
Ngoài ra, để sử dụng easy_install hoặc pip với cả hai phiên bản, hãy thay đổi đường dẫn để đưa vào c:\python35;c:\python35\scripts;c:\python27\scripts;. Điều này cho phép sử dụng pip2/ pip3, và easy_install-2.7/ easy_install-3.5thay vì pipeasy_install.
ndtsc

1
Không làm việc với các chương trình khác nhau không gửi Python của riêng họ và khăng khăng sử dụng phiên bản hệ thống và không tôn trọng trình khởi chạy.
Jonathan Baldwin

1
Không, đừng thêm bất kỳ Python nào vào đường dẫn. Sử dụng py -m pip install .... Thêm các công tắc sau pyđể chọn Python nào để chạy pip bên dưới như trên.
Mark Tolonen

75

Những gì tôi đã làm là tải xuống cả 2.7.6 và 3.3.4. Python 3.3.4 có tùy chọn thêm đường dẫn đến nó trong biến môi trường để hoàn thành. Vì vậy, về cơ bản tôi chỉ cần thêm Python 2.7.6 theo cách thủ công.

Làm thế nào để...

  1. Bắt đầu> trong loại tìm kiếm trong môi trường, chọn "Chỉnh sửa biến môi trường cho tài khoản của bạn" 1

  2. Cuộn xuống Đường dẫn, chọn đường dẫn, nhấp vào chỉnh sửa.

  3. Thêm C: \ Python27; vì vậy bạn nên có đường dẫn đến cả hai phiên bản Python ở đó, nhưng nếu bạn không có nó, bạn có thể dễ dàng chỉnh sửa nó để bạn làm ..... C: \ Python27; C: \ Python33;

  4. Điều hướng đến thư mục Python27 trong C: \ và đổi tên một bản sao của python.exe thành python2.exe

  5. Điều hướng đến thư mục Python34 trong C: \ và đổi tên một bản sao của python.exe thành python3.exe

  6. Kiểm tra: mở dấu nhắc commANGE và gõ python2 .... BOOM! Trăn 2.7.6. thoát ra

  7. Kiểm tra: mở dấu nhắc commANGE và gõ python3 .... BOOM! Con trăn 3.4.3. thoát ra

Lưu ý: (để không phá vỡ các lệnh pip trong bước 4 và 5, hãy giữ bản sao của python.exe trong cùng thư mục với tệp đã đổi tên)


43
Điều này sẽ phá vỡ cả pip2 và pip3! Không thay thế python, sao chép nó và đổi tên tập tin thứ hai thành python2 / python3.
brunofitas 20/03/2015

1
chỉ cần một lời cảnh báo, tôi đã không thể gỡ cài đặt python cho đến khi tôi hoàn nguyên tên. Lời khuyên của tôi là tạo các bản sao và đổi tên chúng nhưng để lại các tệp python.exe gốc ** như được đề cập bởi bruno.
Logic1

2
Bạn có thể xử lý phản hồi của brunofitas trong câu trả lời?
030

Vâng, tôi vừa đổi tên python.exe trong bản cài đặt Python3 thành python3.exe. Tôi nghĩ điều này tự động xảy ra với python trong môi trường * nix. Tất nhiên không có tập tin .exe nhưng có chương trình python2 và python3. :)
dùng3870315

Nếu bạn có thư viện / plugin phụ thuộc vào một trong hai phiên bản python, hãy đảm bảo rằng phiên bản đó xuất hiện đầu tiên trong biến môi trường PATH của bạn
aphoe

51

Tôi có nhiều phiên bản trong windows. Tôi chỉ thay đổi tên exe của phiên bản mà tôi không mặc định.

python.exe -> python26.exe

pythonw.exe -> pythonw26.exe

Đối với trình cài đặt gói, hầu hết các trình cài đặt exe cho phép bạn chọn cài đặt python để thêm gói. Để cài đặt thủ công, hãy xem tùy chọn --prefix để xác định nơi gói sẽ được cài đặt:

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


Điều này đã làm việc. Trước khi thực hiện thay đổi này, khi tôi cố chạy một chương trình trong Python 2.7, nó vẫn chạy trong Python 3.1 (Có lẽ vì Windows 7 không thể xử lý hai chương trình khác nhau có cùng tên). Sau khi đổi tên exe như hiển thị, mọi thứ đều ổn.
dln385

4
@ dln385: Nếu nó trả lời câu hỏi của bạn, bạn nên chấp nhận nó bằng cách nhấp vào dấu kiểm.
dappawit

1
Điều này cũng làm việc cho tôi. Tôi đã có một cuộc xung đột giữa Python 2.7 và Python 3.2. Vì tôi đã cài đặt Python 3.2 trước (và đặt một cách thích hợp là biến môi trường), tôi không thể truy cập Python 2.7 trong lời nhắc (thay vào đó, tôi đã nhận Python 3.2). Tôi muốn sử dụng như Python 2.7 mặc định, do đó, tôi đã thay đổi python.exe thành python3.2.exe và giữ python.exe của Python 2.7 không thay đổi. Điều đó đã lừa
Robert Smith

Tôi chưa cài đặt python3 mới trên windows trong một thời gian, nhưng phiên bản tôi có bao gồm cả pip pip3pip3.4. (nó cũng bao gồm nó như pip, nhưng tôi nghĩ việc xóa sẽ giải quyết mọi xung đột với python2). Trên thực tế tôi không có C:\Python34\Scriptstrong mình Path, vì vậy tôi không có bất kỳ vấn đề nào liên quan đến pip ...
monkut

30

Nếu bạn sử dụng Anaconda Python, bạn có thể dễ dàng cài đặt các môi trường khác nhau.

Giả sử bạn đã cài đặt Anaconda Python 2.7 và bạn muốn có môi trường python 3.4:

conda create -n py34 python=3.4 anaconda

Sau đó, để kích hoạt môi trường:

activate py34

Và để vô hiệu hóa:

deactivate py34

(Với Linux, bạn nên sử dụng source activate py34.)

Liên kết:

Tải xuống Anaconda Python

Hướng dẫn về môi trường


IMO conda cho đến nay là cách tốt nhất để gây rối với các cài đặt Python khác nhau. Tôi đã làm hỏng rất nhiều thứ trước khi chuyển đến Anaconda.
jrinker

11

Để cài đặt và chạy bất kỳ phiên bản Python nào trong cùng hệ thống, hãy làm theo hướng dẫn của tôi dưới đây.


Ví dụ: bạn muốn cài đặt Python 2.x và Python 3.x trên cùng một hệ thống Windows.

  1. Cài đặt cả hai bản phát hành nhị phân của họ bất cứ nơi nào bạn muốn.

    • Khi được nhắc không đăng ký phần mở rộng tập tin của họ và
    • không tự động thêm chúng vào biến môi trường PATH
  2. Chạy đơn giản là lệnh pythonthực thi được gặp lần đầu tiên trong PATH sẽ được chọn để khởi chạy. Nói cách khác, thêm các thư mục Python bằng tay. Cái bạn thêm trước sẽ được chọn khi bạn gõ python. Các chương trình python liên tiếp (tăng thứ tự mà các thư mục của chúng được đặt trong PATH) sẽ được chọn như vậy:

    • py -2 cho lần thứ hai python
    • py -3 cho thứ ba, pythonv.v.
  3. Bất kể thứ tự của "trăn" bạn có thể:

    • chạy các kịch bản Python 2.x bằng lệnh: py -2 (chức năng Python 3.x) (tức là chương trình cài đặt Python 2.x đầu tiên được tìm thấy trong PATH của bạn sẽ được chọn)
    • chạy tập lệnh Python 3.x bằng lệnh: hoặc py -3 (nghĩa là chương trình cài đặt Python 3.x đầu tiên được tìm thấy trong PATH của bạn sẽ được chọn)

Trong ví dụ của tôi, tôi đã cài đặt Python 2.7.14 và Python 3.5.3. Đây là cách biến PATH của tôi bắt đầu bằng:

PATH = C: \ Tệp chương trình \ Microsoft MPI \ Bin \; C: \ Python27; C: \ Chương trình tệp \ Python_3.6 \ Sc scripts \; C: \ Chương trình tệp \ Python_3.6 \; C: \ ProgramData \ Oracle \ Java \ javapath; C: \ Chương trình tệp (x86) \ Tệp chung \ Intel \ được chia sẻ

...

Lưu ý rằng Python 2.7 là đầu tiên và Python 3.5 giây.

  • Vì vậy, pythonlệnh chạy sẽ khởi chạy python 2.7 (nếu Python 3.5 cùng một lệnh sẽ khởi chạy Python 3.5).
  • Chạy py -2khởi chạy Python 2.7 (vì thực tế là Python thứ hai là Python 3.5 không tương thích với py -2). Chạy py -3khởi chạy Python 3.5 (vì đó là Python 3.x)
  • Nếu bạn có một con trăn khác sau này trong đường dẫn của bạn, bạn sẽ khởi chạy như vậy : py -4. Điều này có thể thay đổi nếu / khi Python phiên bản 4 được phát hành.

Bây giờ py -4hoặc py -5vv trên đầu ra hệ thống của tôi: Requested Python version (4) not installedhoặc Requested Python version (5) not installedvv

Hy vọng điều này là đủ rõ ràng.


Làm thế nào bạn có thể chỉ định một cài đặt pip trong một trong các dist của Python?
Víctor Martínez

Đối với con trăn đầu tiên được tìm thấy chỉ cần gõ pip. Đối với bất kỳ python nào khác được cài đặt, bạn phải chỉ định thủ công đường dẫn, nghĩa là. C:\Python27\Scripts\pip.py [parameters]. (Tất nhiên, là một phím tắt, bạn có thể đặt bất kỳ exe nào bạn muốn vào một biến môi trường.)
Nikos

@ Nik-Lz Lệnh "py -2" là gì, mà bạn đang đề cập đến? Tôi dường như không có những thứ này trên cửa sổ của mình 7.
Janos

2
Đây chính xác là cách python nên được sử dụng trên windows trong trường hợp có nhiều phiên bản.
getName


8

Đây là những gì bạn có thể làm:

Cài đặt cmder . Mở và sử dụng Cmder như bạn muốn với thiết bị đầu cuối cmd. Sử dụng bí danh lệnh để tạo bí danh lệnh.

Tôi đã làm như sau:

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

Và đó là nó! ;-)


6
set-alias python2 c:\python27\python.exe
Tiên tri Daniel

Sử dụng tập bí danh làm ví dụ hiển thị nếu sử dụng Powershell. Trong trường hợp đó, sẽ không cần phải cài đặt Cmder.
Tiên tri Daniel

@ProphetDaniel Điều này nên được đăng dưới dạng một câu trả lời riêng biệt. Nó hoàn toàn trả lời câu hỏi ban đầu.
Dr_Zaszuś

7

Tôi thực sự chỉ nghĩ về một giải pháp thú vị. Mặc dù Windows sẽ không cho phép bạn dễ dàng đặt bí danh cho các chương trình, thay vào đó, bạn có thể tạo các tệp bó được đổi tên sẽ gọi chương trình hiện tại.

Thay vì đổi tên tệp thực thi sẽ phá vỡ nhiều thứ, kể cả pip, hãy tạo tệp python2.bat trong cùng thư mục với python2.exe. Sau đó thêm dòng sau:

%~dp0python %*

Cú pháp cổ xưa này có nghĩa là gì? Chà, đó là một tập lệnh bó, (phiên bản Windows của bash). % ~ dp0 lấy thư mục hiện tại và% * sẽ chuyển tất cả các đối số cho python được truyền vào tập lệnh.

Lặp lại cho python3.bat

Bạn cũng có thể làm tương tự cho pip và các tiện ích khác, chỉ cần thay thế từ python trong tệp bằng pip hoặc bất kỳ tên tệp nào. Bí danh sẽ là bất cứ thứ gì mà tập tin được đặt tên.

Tuyệt vời nhất, khi được thêm vào PATH, Windows bỏ qua phần mở rộng để chạy

python3

Sẽ khởi chạy phiên bản python3 và lệnh python2 sẽ khởi chạy phiên bản python2.

BTW, đây là kỹ thuật tương tự Spyder sử dụng để thêm chính nó vào đường dẫn trên Windows. :)


1
Giải pháp tuyệt vời mà không sửa đổi các tập tin python hiện có.
Om Prakash

3

Bạn có thể cài đặt nhiều phiên bản của Python một máy và trong quá trình thiết lập, bạn có thể chọn để một trong số chúng liên kết với phần mở rộng tệp Python. Nếu bạn cài đặt các mô-đun, sẽ có các gói thiết lập khác nhau cho các phiên bản khác nhau hoặc bạn có thể chọn phiên bản bạn muốn nhắm mục tiêu. Vì họ thường tự cài đặt vào thư mục gói trang web của phiên bản trình thông dịch, nên không có bất kỳ xung đột nào (nhưng tôi chưa kiểm tra điều này). Để chọn phiên bản python nào, bạn sẽ phải chỉ định thủ công đường dẫn đến trình thông dịch nếu nó không phải là phiên bản mặc định. Theo như tôi biết, họ sẽ chia sẻ cùng một biến PATH và PYTHONPATH, đây có thể là một vấn đề.

Lưu ý: Tôi chạy Windows XP. Tôi không biết nếu bất kỳ điều này thay đổi cho các phiên bản khác, nhưng tôi không thấy bất kỳ lý do nào mà nó sẽ xảy ra.


3
Tôi đã cài đặt đồng thời python 2.5, 2.6 và 3.1, tôi thậm chí không bao giờ nghĩ rằng mình có thể phải làm một việc gì đó khó hơn là chạy tất cả các trình cài đặt cho mỗi phiên bản tôi cần.
SingleNegationElimination

3

Những gì tôi đã thực hiện trên máy tính windows của riêng mình nơi tôi đã cài đặt Python 2.7 và Python 3.4 là tôi đã viết một tệp .bat đơn giản trong cùng thư mục với các tệp Python.exe của mình. Họ trông giống như,

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

% * Cho phép bạn thêm đối số (tệp Python) sau đó. Tôi tin rằng / k giữ lời nhắc mở sau khi hoàn thành chạy tập lệnh. Sau đó, tôi lưu nó dưới dạng python27.bat Sau đó, tôi vào thư mục Python 3 của mình và tạo một tập tin bat ở đó. Bây giờ trong dòng lệnh của tôi, tôi có thể viết

Python27 helloworld.py

Hoặc là

Python34 helloworld.py

Và chúng sẽ chạy trong các phiên bản Python tương ứng. Đảm bảo rằng c: \ python27c: \ python34 nằm trong các biến môi trường của bạn.

Tôi đã nhận được câu trả lời của tôi từ đây


2

Tôi đã làm điều này trong ba bước bằng cách làm theo các hướng dẫn ở đây: Tất cả được lấy trực tiếp từ đây: http://ipython.readthedocs.io/en/ sóng / install / kernel_install.html . Tôi hiện đang chạy Python 2.x trên Windows 8 và đã cài đặt Anaconda 4.2.13.

1) Đầu tiên cài đặt phiên bản mới nhất của python:

conda create -n python3 python=3 ipykernel

2) Tiếp theo kích hoạt python3

activate python3

3) Cài đặt kernel:

python -m ipykernel install --user

Nếu bạn đã cài đặt Python 3 và muốn cài đặt 2, hãy chuyển 2 và 3 ở trên. Khi bạn mở một sổ ghi chép mới, bây giờ bạn có thể chọn giữa Python 2 hoặc 3.


1

Kiểm tra các biến môi trường hệ thống của bạn sau khi cài đặt Python, các thư mục của python 3 phải là đầu tiên trong biến PATH của bạn, sau đó là python 2.

Bất kỳ biến đường dẫn nào khớp với đầu tiên là một Windows sử dụng.

Như mọi khi py -2 sẽ khởi chạy python2 trong kịch bản này.


1

Tôi đã gặp phải vấn đề đó bản thân mình và tôi đã tạo các trình khởi chạy của mình trong một .bat để bạn có thể chọn phiên bản bạn muốn khởi chạy.

Vấn đề duy nhất là .py của bạn phải nằm trong thư mục python, nhưng dù sao đây là mã:

Đối với 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

Đối với 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

Lưu chúng dưới dạng .bat và làm theo hướng dẫn bên trong.


0

Cài đặt cái bạn sử dụng nhiều nhất (3,3 trong trường hợp của tôi) so với cái khác. Điều đó sẽ buộc IDLE sử dụng cái bạn muốn.

Ngoài ra (từ python3.3 README):

Cài đặt nhiều phiên bản

Trên các hệ thống Unix và Mac nếu bạn có ý định cài đặt nhiều phiên bản Python bằng cùng một tiền tố cài đặt (đối số --prefix cho tập lệnh cấu hình), bạn phải lưu ý rằng tệp thực thi python chính của bạn không bị ghi đè bởi cài đặt phiên bản khác. Tất cả các tệp và thư mục được cài đặt bằng cách sử dụng "make altinstall" chứa phiên bản chính và phụ và do đó có thể sống cạnh nhau. "make install" cũng tạo $ {tiền tố} / bin / python3 dùng để chỉ $ {tiền tố} /bin/pythonX.Y. Nếu bạn định cài đặt nhiều phiên bản bằng cùng một tiền tố, bạn phải quyết định phiên bản nào (nếu có) là phiên bản "chính" của bạn. Cài đặt phiên bản đó bằng cách sử dụng "make install". Cài đặt tất cả các phiên bản khác bằng cách sử dụng "make altinstall".

Ví dụ: nếu bạn muốn cài đặt Python 2.6, 2.7 và 3.3 với 2.7 là phiên bản chính, bạn sẽ thực hiện "make install" trong thư mục bản dựng 2.7 của mình và "tạo altinstall" trong các thư mục khác.


0

Tôi chỉ cần cài đặt chúng. Sau đó, tôi đã sử dụng phần mềm miễn phí (và di động) tại http://defaultprogramseditor.com/ trong "Cài đặt loại tệp" / "Trình đơn ngữ cảnh" / search: "py", chọn tệp .py và thêm lệnh 'mở' cho 2 IDLE bằng cách sao chép lệnh tồn tại có tên 'mở bằng IDLE, thay đổi tên thành IDLE 3.4.1 / 2.7.8 và đặt lại số tệp của các phiên bản tương ứng của chúng trong đường dẫn chương trình. Bây giờ tôi chỉ cần nhấp chuột phải vào tệp .py và chọn IDLE mà tôi muốn sử dụng. Có thể làm tương tự với phiên dịch trực tiếp nếu bạn thích.


-1

Chỉ hoạt động nếu mã của bạn đang chạy trong IDE Python của bạn

Tôi đã cài đặt cả Python 2.7 và Python 3.3 trên hệ điều hành windows của mình. Nếu tôi cố gắng khởi chạy một tệp, nó thường sẽ mở ra trên IDE python 2.7. Cách tôi giải quyết vấn đề này, là khi tôi chọn chạy mã trên python 3.3, tôi mở python 3.3 IDLE (Python GUI), chọn tệp, mở tệp của mình bằng IDLE và lưu nó. Sau đó, khi tôi chạy mã của mình, nó chạy đến IDLE mà tôi hiện đang mở. Nó hoạt động ngược lại với 2.7.


-1

Tôi đã cài đặt cả python 2.7.13 và python 3.6.1 trên windows 10pro và tôi đã nhận được cùng một "lỗi nghiêm trọng" khi tôi thử pip2 hoặc pip3.

Những gì tôi đã làm để sửa lỗi này là đi đến vị trí của python.exe cho các tệp python 2 và python 3 và tạo một bản sao của mỗi tệp, sau đó tôi đổi tên từng bản sao thành python2.exe và python3.exe tùy thuộc vào phiên bản python trong thư mục cài đặt. Do đó, tôi đã có trong mỗi thư mục cài đặt python cả tệp python.exe và python2.exe hoặc python3.exe tùy thuộc vào phiên bản python.

Điều này đã giải quyết vấn đề của tôi khi tôi gõ pip2 hoặc pip3.


-2

Nếu bạn không thể làm gì khác, hãy mở một trình thông dịch ở bất kỳ phiên bản nào bạn chọn (tôi thích sử dụng iPython) và:

import subprocess

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

Điều này sử dụng bất kỳ phiên bản python nào bạn hiện đang hoạt động. Hoạt động tốt cho một tập lệnh, nhưng sẽ nhanh chóng thoát khỏi tầm tay nếu có nhiều tập lệnh bạn chạy, trong trường hợp đó bạn luôn có thể tạo một tệp bó với tất cả các cuộc gọi này bên trong. Không phải là câu trả lời thanh lịch nhất, nhưng nó hoạt động.

Có cách nào để tạo bí danh cho phiên bản python khác nhau thành Linux không?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.