Cách chạy nhiều phiên bản Python trên Windows


170

Tôi đã cài đặt hai phiên bản Python trên máy của mình (phiên bản 2.6 và 2.5). Tôi muốn chạy 2.6 cho một dự án và 2.5 cho một dự án khác.

Làm thế nào tôi có thể chỉ định mà tôi muốn sử dụng?

Tôi đang làm việc trên Windows XP SP2.


3
Gợi ý tốt cho việc đặt câu hỏi là giải thích những gì bạn đã cố gắng, và theo cách nào mà thất bại. Vì vậy: Bạn đã thử những gì, và theo cách nào mà nó không hoạt động?
Lennart Regebro

Lưu ý, tôi không thể tìm thấy bất kỳ câu hỏi nào trước đây về vấn đề này trên Windows, vì vậy tôi đã thay đổi tiêu đề để phản ánh điều đó.
Lennart Regebro


Nếu bạn muốn chạy 3.3 cùng với 2.7 thì đây là câu trả lời được tiêu chuẩn hóa nhất : - stackoverflow.com/questions/15912063/ chủ
Omar Tariq

Câu trả lời:


135

Chạy một bản sao khác của Python cũng dễ như bắt đầu thực thi chính xác. Bạn đề cập rằng bạn đã bắt đầu một phiên bản python, từ dòng lệnh, chỉ bằng cách gõ python.

Điều này làm trong Windows, là để truy tìm %PATH%biến môi trường, kiểm tra tệp thực thi, tệp bó ( .bat), tệp lệnh ( .cmd) hoặc một số tệp thực thi khác để chạy (điều này được điều khiển bởi PATHEXTbiến môi trường), khớp với tên đã cho. Khi nó tìm thấy tập tin chính xác để chạy tập tin đang được chạy.

Bây giờ, nếu bạn đã cài đặt hai phiên bản python 2.5 và 2.6, đường dẫn sẽ có cả hai thư mục của chúng trong đó, giống như PATH=c:\python\2.5;c:\python\2.6nhưng Windows sẽ dừng kiểm tra đường dẫn khi tìm thấy kết quả khớp.

Những gì bạn thực sự cần làm là gọi một cách rõ ràng một hoặc cả hai ứng dụng, chẳng hạn như c:\python\2.5\python.exehoặcc:\python\2.6\python.exe .

Cách khác là tạo một lối tắt đến cách python.exegọi tương ứng giữa người này python25và người kia python26; sau đó bạn có thể chỉ cần chạy python25trên dòng lệnh của bạn.


41
Cách tạo lối tắt đó
Bilal Basharat

8
Khi bạn ở trong windows, hãy điều hướng đến thư mục chứa phiên bản python mà bạn muốn tạo lối tắt cho, sau đó nhấp chuột phải và tạo lối tắt. Sau đó bạn có thể đổi tên nó.
aodj

3
Xin lỗi để đào một bài viết dài chết, nhưng làm thế nào bạn sẽ làm cho phím tắt hoạt động mà không yêu cầu phần mở rộng .lnk?
Nathan Tornquist

7
Nếu một phím tắt không hoạt động, bạn có thể làm như @FJ đã nói, và chỉ cần sao chép và đổi tên. Không, bạn có thể tạo một liên kết tượng trưng, ​​sử dụng '' mklink '' trên dòng lệnh.
aodj

7
Cách tốt nhất không phải là tạo một tập tin bat có tên python25 và python26 và biến chúng thành phiên bản phù hợp? Sau đó, tất cả những gì bạn cần làm là đặt 2 tệp dơi đó cùng với các tệp nhị phân của chúng.
Jeremy Cantrell

100

Thêm hai giải pháp nữa cho vấn đề:

  • Sử dụng pylauncher (nếu bạn có Python 3.3 hoặc mới hơn không cần phải cài đặt nó như là nó đến với Python đã được) và thể thêm dòng công việc để kịch bản của bạn;

#! c:\[path to Python 2.5]\python.exe - đối với các tập lệnh bạn muốn được chạy với Python 2.5
#! c:\[path to Python 2.6]\python.exe - cho các tập lệnh bạn muốn được chạy với Python 2.6

hoặc thay vì chạy pythonlệnh chạy pylauncher lệnh ( py) chỉ định phiên bản Python nào bạn muốn;

py -2.6- phiên bản 2.6
py -2- phiên bản cài đặt mới nhất 2.x
py -3.4- phiên bản 3.4
py -3- phiên bản cài đặt mới nhất 3.x

  • Cài đặt virtualenv và tạo hai virtualenvs;

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

ví dụ

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

sau đó bạn có thể kích hoạt đầu tiên và làm việc với Python 2.5 như thế này
c:\venvs\2.5\activate
và khi bạn muốn chuyển sang Python 2.6, bạn làm

deactivate  
c:\venvs\2.6\activate

pylauncher dường như là bản triển khai nguyên mẫu của PEP 397 , được chấp nhận làm Tiêu chuẩn theo dõi từ năm 2011. Bạn có biết tại sao trình khởi chạy vẫn không được phân phối với Python cho Windows hay tại sao vẫn chỉ có triển khai nguyên mẫu của Vinay Sajip?
martineau

4
Pylauncher đang được phân phối với Python bắt đầu từ phiên bản 3.3 - xem python.org/doad/release/3.3.0 . Ngoài ra tôi nghĩ việc triển khai của Vinay Sajip là việc triển khai không chỉ đơn thuần là một nguyên mẫu.
Piotr Dobrogost

1
Cảm ơn bạn đã làm rõ. IMHO pylauncher cũng nên được phân phối như một phần của phiên bản Python 2 mới nhất bởi vì những người sử dụng phiên bản đó có nhiều khả năng là những người muốn cài đặt nhiều phiên bản (và có nhiều khả năng sẽ làm như vậy nếu họ biết về chức năng và tính khả dụng của nó).
martineau

StackOverflow nên cho phép nhiều upvote, câu trả lời của bạn xứng đáng với upvote vô hạn! Nghiêm túc mà bạn đã được bro! : D Đơn giản, rõ ràng và làm việc tất nhiên!
3bdalla

Gợi ý rất tốt. Tôi đã sử dụng cái thứ hai (virtualenv). Điểm khác biệt duy nhất tôi tìm thấy là tôi phải đưa '\ scripts' vào đường dẫn để kích hoạt, ví dụ : c:\venvs\2.5\scripts\activate. Đây là trên Windows 10 nếu điều đó tạo ra sự khác biệt. Khác hơn thế, hoạt động như một nét duyên dáng, cảm ơn.
Dave Marley

53

Từ Python 3.3 trở đi, có trình khởi chạy Python chính thức cho Windows ( http://www.python.org/dev/peps/pep-0397/ ). Bây giờ, bạn có thể sử dụng #!pythonXđể xác định phiên bản mong muốn của trình thông dịch cũng trên Windows. Xem thêm chi tiết trong một bình luận khác của tôi hoặc đọc PEP 397.

Tóm tắt: Việc py script.pykhởi chạy phiên bản Python được nêu trong #!hoặc Python 2 nếu #!bị thiếu. Việc py -3 script.pykhởi chạy Python 3.


1
Đây là câu trả lời tôi đang tìm kiếm. Tôi chạy Windows 10 với Python 2.7 và Python 3.4.3. Trong dấu nhắc lệnh, gõ "py [python_version_number]" ex: py -3 hoặc py sẽ gọi phiên bản python mà bạn có. Tôi nghĩ các biến môi trường phải được đặt trước khi bạn sử dụng. Điều này là thuận tiện cho tôi.
CodeMonkey

2
@Inuka: Không cần đặt biến môi trường. Trình cài đặt Python thiết lập các liên kết với .pyphần mở rộng. Trình khởi chạy chính nó được cài đặt vào C:\Windowsđó đã có trong PATH. Bằng cách này, cũng PATHkhông cần phải sửa đổi.
pepr

2
Cảm ơn rất nhiều cho câu trả lời của bạn. Từ cách này, chúng ta có thể gọi pip là tốt. py -2 -m pip cài đặt somePackage hoặc py -3.4.3 -m pip cài đặt somePackage
CodeMonkey

Tôi nghĩ rằng đây là giải pháp đơn giản nhất và không phiền phức.
prasad

46

Theo @alexander, bạn có thể tạo một tập hợp các liên kết tượng trưng như bên dưới. Đặt chúng ở một nơi nào đó được bao gồm trong đường dẫn của bạn để chúng có thể dễ dàng được gọi

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe

Miễn là c: \ bin hoặc bất cứ nơi nào bạn đặt chúng vào trong đường dẫn của bạn, bây giờ bạn có thể đi

> python25

4
Ý tưởng thông minh. BTW mklinkchỉ có sẵn trong Windows Vista / 2008 +. Trên XP và Server 2003, một "liên kết cứng" có thể được tạo thay vì sử dụng fsutil hardlink create <new filename> <existing filename>và đặt hoặc di chuyển <tên tệp mới> đến một nơi nào đó trong đường dẫn của bạn. Tuy nhiên, các liên kết cứng chỉ hoạt động trên cùng một ổ đĩa.
martineau

Đây là một giải pháp tốt, tôi không chắc nó cũng hoạt động mà không có hệ thống tệp dựa trên NTFS.
meawoppl

Có, yêu cầu hỗ trợ cho các liên kết tượng trưng NTFS mà tôi tin rằng đã được giới thiệu trong Vista (tôi có thể sai). Sử dụng trên XP yêu cầu sử dụng trình điều khiển khác . Âm thanh như nó đã bị tắt ở một số giai đoạn trước khi phát hành chung.
Christopher Hackett

giải pháp tốt nhất dễ dàng nhất
giantas

15
  1. cài đặt trăn

    • C: \ Python27
    • C: \ Python36
  2. biến môi trường

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. đổi tên tập tin

    • C: \ Python27 \ python.exe → C: \ Python27 \ python2.exe
    • C: \ Python36 \ python.exe → C: \ Python36 \ python3.exe
  4. pip

    • python2 -m pip install package
    • python3 -m pip install package

Tôi nghĩ, ít nhiều đây là giải pháp thiết thực cho câu hỏi. Điều này tiện dụng hơn so với cách tiếp cận trong đó liên kết phím tắt / biểu tượng được sử dụng để gọi tập lệnh python. Thay vì đổi tên tệp, chúng ta có thể sao chép và dán tệp nhị phân (python.exe) sau đó đổi tên tệp theo phiên bản của nó (như thể hiện trong câu trả lời này). Nhân tiện, pythonlệnh sẽ gây nhầm lẫn cho hệ điều hành.
testuser

Câu trả lời chính xác! Cảm ơn ~ @ 山 茶树 和
Bright Chang

14

Ví dụ cho loại phiên bản 3.6 py -3.6. Nếu bạn cũng có phiên bản 32 bit và 64 bit, bạn chỉ cần nhập py -3.6-64hoặc py -3.6-32.


3
Đây phải là câu trả lời được chấp nhận! Cảm ơn rất nhiều!
Xonshiz

3
Đây có thể là câu trả lời tốt nhất, vì nó không yêu cầu đổi tên tệp và IDE của bên thứ ba sẽ phát hiện cả hai như bình thường!
Enchant97

bạn có thể nâng cao câu trả lời với nhiều lời giải thích hơn - nơi này có thể pythực thi được không - đây có phải là một bổ sung chỉ dành cho windows không? Có thể kết hợp điều này vào một tập lệnh dòng lệnh đa nền tảng có ở đầu không: #!/usr/bin/env python3chẳng hạn?
Ed Randall

7

Khi bạn cài đặt Python, nó sẽ không ghi đè lên các bản cài đặt khác của các phiên bản chính khác. Vì vậy, cài đặt Python 2.5.x sẽ không ghi đè lên Python 2.6.x, mặc dù cài đặt 2.6.6 sẽ ghi đè lên 2.6.5.

Vì vậy, bạn có thể chỉ cần cài đặt nó. Sau đó, bạn gọi phiên bản Python mà bạn muốn. Ví dụ:

C:\Python2.5\Python.exe

cho Python 2.5 trên windows và

C:\Python2.6\Python.exe

cho Python 2.6 trên windows hoặc

/usr/local/bin/python-2.5

hoặc là

/usr/local/bin/python-2.6

trên Windows Unix (bao gồm cả Linux và OS X).

Khi bạn cài đặt trên Unix (bao gồm cả Linux và OS X), bạn sẽ nhận được một pythonlệnh chung được cài đặt, đây sẽ là lệnh cuối cùng bạn đã cài đặt. Điều này chủ yếu không phải là một vấn đề vì hầu hết các tập lệnh sẽ gọi /usr/local/bin/python2.5 hoặc một cái gì đó chỉ để bảo vệ chống lại điều đó. Nhưng nếu bạn không muốn làm điều đó và có lẽ bạn không thể cài đặt nó như thế này:

./configure
make
sudo make altinstall

Lưu ý "altinstall" có nghĩa là nó sẽ cài đặt nó, nhưng nó sẽ không thay thế pythonlệnh.

Trên Windows, bạn không nhận được pythonlệnh toàn cầu theo như tôi biết vì vậy đó không phải là vấn đề.


cảm ơn vì đã giúp tôi trả lời câu hỏi thứ hai của tôi: làm thế nào tôi có thể chạy cả hai cùng một lúc? khi tôi chuyển đổi thành công từ 2,5 sang 2,6
Bilal Basharat

@Bilal Basharat: Windows là một hệ điều hành đa tác vụ nếu bạn muốn chạy hai thứ cùng một lúc, bạn chỉ cần bắt đầu cả hai, vì vậy tôi không hiểu câu hỏi của bạn.
Lennart Regebro

Hiện tại tôi đang làm việc trên python2.5. chỉ đơn giản là xây dựng cho tôi làm thế nào tôi có thể chạy 2.6? Khi tôi viết 'python' trong cửa sổ lệnh nhắc nhập shell python thì python2.5 xuất hiện. Trong ổ đĩa c tôi đã cài đặt cả hai phiên bản. khi tôi truy cập C: \ Python2.6 \ Python.exe. hơn python2.6 tạm thời kích hoạt. Ngay sau khi tôi rời khỏi C: \ Python2.6 \, nó lại biến thành phiên bản 2.5
Bilal Basharat

3
@Bilal Basharat: Tôi đã trả lời điều này. Nó không phải là "kích hoạt tạm thời". Bạn đã chạy Python 2.6 bằng lệnh C: \ Python2.6 \ Python.exe và đó là cách bạn chạy nó. Và bạn chạy Python 2.5 bằng lệnh C: \ Python2.5 \ Python.exe. Đó là cách bạn chạy cả hai cùng một lúc.
Lennart Regebro

1
@Bilal Basharat: Nếu một trong hai C:\Python2.5hoặc C:\Python2.6thư mục xuất hiện trong PATHbiến môi trường của bạn , phiên bản Python tương ứng sẽ trở thành mặc định trừ khi bạn ghi đè lên nó bằng cách chỉ định rõ ràng một đường dẫn khác đến .exe mà bạn muốn sử dụng.
martineau


5

Đây là một bản hack nhanh:

  1. Chuyển đến thư mục của phiên bản python bạn muốn chạy
  2. Nhấp chuột phải vào python.exe
  3. Chọn ' Tạo lối tắt '
  4. Đặt tên phím tắt đó để gọi theo (Tôi sử dụng p27, p33, v.v.)
  5. Di chuyển lối tắt đó vào thư mục nhà của bạn (C:\Users\Your name )
  6. Mở một dấu nhắc lệnh và nhập name_of_your_shortcut.lnk(Tôi sử dụng p27.lnk)

1

cp c: \ python27 \ bin \ python.exe là python2.7.exe

cp c: \ python34 \ bin \ python.exe là python3.4.exe

tất cả chúng đều nằm trong đường dẫn hệ thống, chọn phiên bản bạn muốn chạy

C:\Users\username>python2.7
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users\username>python3.4
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Điều này làm việc cho tôi. Chỉ cần sử dụng bản sao thay vì cp. Ngoài ra, khi chạy lệnh này, bạn phải ở đâu đó trên đường dẫn và cả cài đặt python, ví dụ: c: \ python34 \ bin \ python.exe và c: \ python27 \ bin \ python.exe cũng cần có trong đường dẫn. (tốt nhất là theo thứ tự đó).
Gregor Schmitz

1

Sử dụng tệp bó để chuyển đổi, dễ dàng và hiệu quả trên windows 7. Tôi sử dụng cách này:

Trong hộp thoại biến môi trường (C: \ Windows \ System32 \ SystemProperIESAdvified.exe),

Trong phần biến người dùng

  1. đã thêm% pathpython% vào biến môi trường đường dẫn

  2. xóa mọi tham chiếu đến đường dẫn python

Trong phần biến hệ thống

  1. xóa mọi tham chiếu đến đường dẫn python

Tôi đã tạo các tệp bó cho mỗi lần cài đặt python (exmple cho 3,4 x64

Tên = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) chỉ để nhớ.

Nội dung của tệp =

     Set PathPython=C:\Python36AMD64\Scripts\;C:\Python36AMD64\;C:\Tcl\bin

     setx PathPython %PathPython%

Để chuyển đổi giữa các phiên bản, tôi thực thi tệp bó trong chế độ quản trị viên.

!!!!! Các thay đổi có hiệu lực đối với cửa sổ nhắc lệnh SUBSEQUENT MỞ. !!!

Vì vậy, tôi có quyền kiểm soát chính xác về nó.


0

Cách dễ nhất để chạy nhiều phiên bản python trên windows được mô tả bên dưới như sau: -

1) Tải xuống các phiên bản mới nhất của python từ python.org/doads bằng cách chọn phiên bản có liên quan cho hệ thống của bạn.

2) Chạy trình cài đặt và chọn Thêm python 3.x vào đường dẫn để tự động đặt đường dẫn trong python 3 (bạn chỉ cần nhấp vào hộp kiểm). Đối với python 2 mở lên cài đặt python 2 của bạn, chọn bất cứ sở thích mà bạn muốn nhưng hãy nhớ để thiết lập Add python.exe đến con đường để có thể được cài đặt trên ổ cứng cục bộ , Bây giờ chỉ cần nhấp vào tiếp theo và chờ cho trình cài đặt đến khi kết thúc.

3) Khi cả hai cài đặt hoàn tất. Nhấp chuột phải vào máy tính của tôi - Chuyển đến thuộc tính - Chọn cài đặt hệ thống nâng cao - Chuyển đến biến môi trường - Nhấp vào mới trong Biến hệ thống và thêm biến hệ thống mới có tên biếnPY_PYTHON và đặt giá trị biến này thành 3 . Bây giờ bấm vào OK và bạn sẽ được thực hiện.

4) Bây giờ để kiểm tra điều này, hãy mở dấu nhắc lệnh . Khi bạn đang ở trong đó gõ python hoặc py , Nó sẽ mở python3 .

5) Bây giờ thoát khỏi python3 bằng cách gõ exit () . Bây giờ gõ py -2 nó sẽ mở python 2.

Nếu không có cái nào hoạt động thì hãy khởi động lại máy tính và nếu vấn đề vẫn còn thì hãy gỡ cài đặt mọi thứ và lặp lại các bước.

Cảm ơn.


0

Bạn có thể tạo các môi trường phát triển python khác nhau từ đồ họa của Anaconda Navigator. Tôi gặp vấn đề tương tự khi làm việc với các phiên bản python khác nhau nên tôi đã sử dụng bộ điều hướng anaconda để tạo các môi trường phát triển python khác nhau và sử dụng các phiên bản python khác nhau trong mỗi môi trường.

Dưới đây là tài liệu trợ giúp cho việc này.

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-envirments/


-1

Sử dụng Trình soạn thảo môi trường nhanh, bạn có thể đẩy lên trên cùng thư mục cài đặt Python mong muốn. Ví dụ: để khởi động python từ thư mục c: \ Python27, hãy đảm bảo rằng thư mục c: \ Python27 nằm trước hoặc trên đầu thư mục c: \ Python36 trong biến môi trường Path. Từ kinh nghiệm của tôi, con trăn thực thi đầu tiên được tìm thấy trong môi trường Đường dẫn đang được thực thi. Ví dụ: tôi đã cài đặt MSYS2 với Python27 và vì tôi đã thêm C: \ MSYS2 vào đường dẫn trước C: \ Python36, python.exe từ thư mục C: \ MSYS2 .... đang được thực thi.


-4

Chỉ cần gọi đúng thực thi


Hiện tại tôi đang làm việc trên 2.5. chỉ đơn giản là xây dựng cho tôi làm thế nào tôi có thể chạy 2.6. trong dấu nhắc lệnh windows tôi phải viết 'python' để vào shell python. và nó là 2,5. Trong ổ đĩa c tôi đã cài đặt cả hai phiên bản.
Bilal Basharat

Thay vì pythonvào vỏ thử python2.5hay python2.6. Tôi không phải là người dùng windows, nhưng trên unix / usr / bin / python thường là bí danh của trình thực thi đủ điều kiện, tôi giả sử python trong windows được cài đặt theo cách tương tự
albertov

1
Trên cửa sổ, tên thực thi luôn là python.exe, nhưng bạn thay đổi đường dẫn thành tệp thực thi. Nó đã được giải thích nhiều lần rồi.
jgritty
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.