Jak uruchomić wiele wersji Pythona w systemie Windows


170

Miałem dwie wersje Pythona zainstalowane na moim komputerze (wersje 2.6 i 2.5). Chcę uruchomić 2.6 dla jednego projektu i 2.5 dla innego.

Jak mogę określić, którego chcę użyć?

Pracuję na Windows XP SP2.


3
Dobre rady dotyczące zadawania pytań to wyjaśnienie, czego próbowałeś i dlaczego się to nie udało. Więc: Czego próbowałeś iw jaki sposób to nie zadziałało?
Lennart Regebro,

Uwaga, nie mogłem znaleźć żadnych wcześniejszych pytań na ten temat w systemie Windows, więc zmieniłem tytuł, aby to odzwierciedlić.
Lennart Regebro,


Jeśli chcesz uruchomić 3.3 wraz z 2.7, to jest to najbardziej ustandaryzowana odpowiedź: - stackoverflow.com/questions/15912063/ ...
Omar Tariq

Odpowiedzi:


135

Uruchomienie innej kopii Pythona jest tak proste, jak uruchomienie odpowiedniego pliku wykonywalnego. Wspomniałeś, że uruchomiłeś instancję Pythona z wiersza poleceń, po prostu wpisując python.

To, co robi w systemie Windows, polega na przeszukaniu %PATH%zmiennej środowiskowej, sprawdzeniu pliku wykonywalnego, albo pliku wsadowego ( .bat), pliku poleceń ( .cmd), albo innego pliku wykonywalnego do uruchomienia (jest to kontrolowane przez PATHEXTzmienną środowiskową), który pasuje do podanej nazwy. Kiedy znajdzie właściwy plik do uruchomienia, plik jest uruchamiany.

Teraz, jeśli zainstalowałeś dwie wersje Pythona 2.5 i 2.6, ścieżka będzie zawierała oba swoje katalogi, coś w rodzaju PATH=c:\python\2.5;c:\python\2.6ale Windows przestanie badać ścieżkę, gdy znajdzie dopasowanie.

To, co naprawdę musisz zrobić, to jawnie wywołać jedną lub obie aplikacje, takie jak c:\python\2.5\python.exelub c:\python\2.6\python.exe.

Inną alternatywą jest utworzenie skrótu do odpowiedniego python.exewywołania jednego z nich python25i drugiego python26; możesz wtedy po prostu uruchomić python25z linii poleceń.


41
jak stworzyć ten skrót
Bilal Basharat

8
Kiedy jesteś w systemie Windows, przejdź do folderu zawierającego wersję Pythona, do której chcesz utworzyć skrót, a następnie kliknij prawym przyciskiem myszy i utwórz skrót. Możesz wtedy zmienić jego nazwę.
aodj

3
Przepraszam, że wykopałem długi, martwy post, ale jak sprawisz, że skrót będzie działał bez konieczności posiadania rozszerzenia .lnk?
Nathan Tornquist

7
Jeśli skrót nie działa, możesz zrobić tak, jak powiedział @FJ i po prostu skopiować i zmienić nazwę. Jeśli to się nie uda, możesz utworzyć dowiązanie symboliczne, używając polecenia „mklink” w wierszu poleceń.
aodj

7
Czy nie najlepszym sposobem byłoby utworzenie pliku bat o nazwie python25 i python26 i nadanie im odpowiedniej wersji? Następnie wszystko, co musisz zrobić, to umieścić te 2 pliki nietoperza obok ich plików binarnych.
Jeremy Cantrell

100

Dodanie dwóch kolejnych rozwiązań problemu:

  • Użyj pylaunchera (jeśli masz Pythona 3.3 lub nowszego, nie musisz go instalować, ponieważ jest już dostępny z Pythonem) i albo dodaj linie shebang do swoich skryptów;

#! c:\[path to Python 2.5]\python.exe- dla skryptów, które mają być uruchamiane w Pythonie 2.5
#! c:\[path to Python 2.6]\python.exe- dla skryptów, które mają być uruchamiane w Pythonie 2.6

lub zamiast uruchamiać pythonpolecenie, uruchom polecenie pylauncher ( py) określające, którą wersję Pythona chcesz;

py -2.6- wersja 2.6
py -2- najnowsza zainstalowana wersja 2.x
py -3.4- wersja 3.4
py -3- najnowsza zainstalowana wersja 3.x

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]

na przykład

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

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

wtedy możesz aktywować pierwszy i pracować z Pythonem 2.5 w ten sposób,
c:\venvs\2.5\activate
a kiedy chcesz przejść na Python 2.6, musisz to zrobić

deactivate  
c:\venvs\2.6\activate

pylauncher wydaje się być prototypową implementacją PEP 397, która została przyjęta jako Standards Track już w 2011 roku. Czy wiesz, dlaczego program uruchamiający nadal nie jest rozpowszechniany z Pythonem dla Windows lub dlaczego nadal istnieje tylko prototypowa implementacja Vinaya Sajipa?
martineau

4
Pylauncher jest dystrybuowany z Pythonem począwszy od wersji 3.3 - zobacz python.org/download/releases/3.3.0 . Myślę też, że implementacja Vinaya Sajipa to implementacja, a nie tylko prototyp.
Piotr Dobrogost

1
Dziękuję za wyjaśnienie. Pylauncher IMHO powinien być również rozpowszechniany jako część najnowszej wersji Pythona 2, ponieważ osoby używające tej wersji są bardziej skłonne do instalowania wielu wersji (i są bardziej skłonne do tego, jeśli są świadome jego funkcjonalności i dostępności).
martineau,

StackOverflow powinien zezwalać na wielokrotne głosy za, Twoja odpowiedź zasługuje na nieskończone głosy za! Poważnie, gdzie byłeś bracie! : D Proste, przejrzyste i oczywiście działające!
3bdalla

Bardzo dobre sugestie. Użyłem drugiego (virtualenv). Jedyną różnicą, jaką znalazłem, było to, że musiałem dołączyć '\ scripts' do ścieżki aktywacji, np c:\venvs\2.5\scripts\activate. : . To jest w systemie Windows 10, jeśli to robi różnicę. Poza tym działa jak urok, dzięki.
Dave Marley

53

Począwszy od Pythona 3.3 dostępny jest oficjalny program uruchamiający Python dla systemu Windows ( http://www.python.org/dev/peps/pep-0397/ ). Teraz możesz użyć #!pythonXdo określenia pożądanej wersji interpretera również w systemie Windows. Zobacz więcej szczegółów w moim innym komentarzu lub przeczytaj PEP 397.

Podsumowanie: W py script.pyuruchamia wersję Pythona Podane w #!lub Pythonie 2, jeśli #!brakuje. Do py -3 script.pyuruchamia Python 3.


1
To jest odpowiedź, której szukam. Używam Windows 10 z Pythonem 2.7 i Pythonem 3.4.3. W wierszu poleceń wpisz „py [numer_wersji_pythona]” np. Py -3 lub py wywołają posiadaną wersję Pythona. Myślę, że zmienne środowiskowe muszą być ustawione przed użyciem tego. to jest dla mnie wygodne.
CodeMonkey,

2
@Inuka: Nie trzeba ustawiać żadnych zmiennych środowiskowych. Instalator Pythona ustawia skojarzenia z .pyrozszerzeniem. Sam program uruchamiający jest zainstalowany w C:\Windowstym, że jest już w PATH. W ten sposób również PATHzmienna nie musi być modyfikowana.
pepr

2
Wielkie dzięki za odpowiedź kolego. W ten sposób możemy również wywołać pip. py -2 -m pip install SomePackage lub py -3.4.3 -m pip install SomePackage
CodeMonkey

Myślę, że to najprostsze i bezproblemowe rozwiązanie.
prasad

46

Zgodnie z @alexander możesz utworzyć zestaw dowiązań symbolicznych, jak poniżej. Umieść je w miejscu, które jest zawarte w twojej ścieżce, aby można je było łatwo przywołać

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

Tak długo, jak c: \ bin lub miejsce, w którym je umieściłeś, jest na twojej ścieżce, możesz teraz iść

> python25

4
Sprytny pomysł. BTW mklinkjest natywnie dostępna tylko w systemie Windows Vista / 2008 +. W systemach XP i Server 2003 zamiast tego można utworzyć „twarde łącze”, używając fsutil hardlink create <new filename> <existing filename>i umieszczając lub przenosząc <nazwa nowego pliku> w inne miejsce na ścieżce. Jednak łącza twarde działają tylko na tym samym dysku.
martineau

To dobre rozwiązanie, nie jestem pewien, czy działa również bez systemu plików opartego na NTFS.
meawoppl

Tak, wymaga obsługi dowiązań symbolicznych NTFS, które moim zdaniem zostały wprowadzone w Vista (mogę się mylić). Używanie w systemie XP wymaga użycia innego sterownika . Wygląda na to, że został wyłączony na pewnym etapie przed premierą.
Christopher Hackett

najłatwiejsze najlepsze rozwiązanie
giantas

15
  1. zainstaluj python

    • C: \ Python27
    • C: \ Python36
  2. Zmienna środowiskowa

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. zmiana nazwy pliku

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

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

Myślę, że mniej więcej jest to praktyczne rozwiązanie tego pytania. Jest to bardziej przydatne w porównaniu z podejściem, w którym do wywołania skryptu w języku Python używany jest skrót / dowiązanie symboliczne. Zamiast zmieniać nazwę pliku, możemy skopiować i wkleić plik binarny (python.exe), a następnie zmienić jego nazwę zgodnie z jego wersją (jak pokazano w tej odpowiedzi). Nawiasem mówiąc, pythonpolecenie byłoby mylące dla systemu operacyjnego.
testuser

Świetna odpowiedź! Dzięki ~ @ 山 茶树 和 葡萄 树
Bright Chang

14

Na przykład dla wersji 3.6 py -3.6. Jeśli masz również wersje 32-bitową i 64-bitową, możesz po prostu wpisać py -3.6-64lub py -3.6-32.


3
To powinna być zaakceptowana odpowiedź! Wielkie dzięki!
Xonshiz

3
Jest to prawdopodobnie najlepsza odpowiedź, ponieważ nie wymaga zmiany nazw plików, a środowiska IDE innych firm wykryją oba w normalny sposób!
Enchant97

czy mógłbyś pyuzupełnić odpowiedź o więcej wyjaśnień - gdzie jest ten plik wykonywalny - czy jest to dodatek tylko do systemu Windows? Czy można to włączyć do wieloplatformowego skryptu wiersza poleceń, który ma na górze: #!/usr/bin/env python3na przykład?
Ed Randall

7

Po zainstalowaniu Pythona nie zastąpi on innych instalacji innych głównych wersji. Zatem zainstalowanie Pythona 2.5.x nie nadpisze Pythona 2.6.x, chociaż zainstalowanie 2.6.6 nadpisze 2.6.5.

Możesz więc po prostu go zainstalować. Następnie wywołujesz żądaną wersję Pythona. Na przykład:

C:\Python2.5\Python.exe

dla Pythona 2.5 w systemie Windows i

C:\Python2.6\Python.exe

dla Pythona 2.6 w systemie Windows lub

/usr/local/bin/python-2.5

lub

/usr/local/bin/python-2.6

w systemie Windows Unix (w tym Linux i OS X).

Podczas instalacji w systemie Unix (w tym Linux i OS X) zostanie pythonzainstalowane ogólne polecenie, które będzie ostatnim zainstalowanym. W większości przypadków nie stanowi to problemu, ponieważ większość skryptów wywołuje bezpośrednio /usr/local/bin/python2.5 lub coś tylko po to, aby się przed tym chronić. Ale jeśli nie chcesz tego robić i prawdopodobnie nie możesz, możesz zainstalować to w następujący sposób:

./configure
make
sudo make altinstall

Zwróć uwagę na „altinstall”, co oznacza, że ​​zainstaluje go, ale nie zastąpi pythonpolecenia.

W systemie Windows nie dostajesz globalnego pythonpolecenia, o ile wiem, więc nie stanowi to problemu.


dziękuję za pomoc, proszę odpowiedzieć również na moje drugie pytanie: jak mogę uruchomić oba na raz? ponieważ pomyślnie przeszedłem z 2.5 na 2.6
Bilal Basharat

@Bilal Basharat: Windows to wielozadaniowy system operacyjny, jeśli chcesz uruchamiać dwie rzeczy w tym samym czasie, po prostu uruchamiasz obie, więc nie rozumiem twojego pytania.
Lennart Regebro,

obecnie pracuję na pythonie2.5. po prostu wyjaśnij mi, jak mogę również uruchomić 2.6? kiedy piszę „python” w wierszu poleceń systemu Windows, aby wejść do powłoki Pythona, pojawia się python2.5. na dysku c miałem zainstalowane obie wersje. kiedy idę do C: \ Python2.6 \ Python.exe. niż python2.6 tymczasowo aktywowany. jak tylko wyjdę z C: \ Python2.6 \ to ponownie zmieniło się w wersję 2.5
Bilal Basharat

3
@Bilal Basharat: Już na to odpowiedziałem. Nie jest „aktywowany tymczasowo”. Uruchomiłeś Python 2.6 z poleceniem C: \ Python2.6 \ Python.exe i tak to uruchomiłeś. Uruchamiasz Python 2.5 za pomocą polecenia C: \ Python2.5 \ Python.exe. W ten sposób biegasz jednocześnie.
Lennart Regebro,

1
@Bilal Basharat: Jeśli katalog C:\Python2.5lub C:\Python2.6pojawi się w PATHzmiennej środowiskowej, odpowiednia wersja Pythona stanie się domyślną, chyba że zastąpisz ją, wyraźnie określając inną ścieżkę do pliku .exe, którego chcesz użyć.
martineau,


5

Oto szybki hack:

  1. Przejdź do katalogu wersji Pythona, którą chcesz uruchomić
  2. Kliknij prawym przyciskiem myszy python.exe
  3. Wybierz „ Utwórz skrót
  4. Nadaj temu skrótowi nazwę, przez którą chcesz zadzwonić (używam p27, p33 itp.)
  5. Przenieś ten skrót do swojego katalogu domowego ( C:\Users\Your name)
  6. Otwórz wiersz polecenia i wprowadź name_of_your_shortcut.lnk(używam p27.lnk)

1

cp c: \ python27 \ bin \ python.exe jako python2.7.exe

cp c: \ python34 \ bin \ python.exe jako python3.4.exe

wszystkie znajdują się w ścieżce systemowej, wybierz wersję, którą chcesz uruchomić

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

to działało dla mnie. Wystarczy użyć copy zamiast cp. Również podczas uruchamiania tego polecenia musisz być gdzieś na ścieżce, a obie instalacje Pythona, np. C: \ python34 \ bin \ python.exe i c: \ python27 \ bin \ python.exe również muszą znajdować się w ścieżce. (najlepiej w tej kolejności).
Gregor Schmitz

1

Używanie pliku wsadowego do przełączania, łatwe i wydajne w systemie Windows 7. Używam tego:

W oknie dialogowym zmiennych środowiskowych (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe)

W sekcji zmienne użytkownika

  1. dodano% pathpython% do zmiennej środowiskowej path

  2. usunięto wszelkie odniesienia do ścieżek Pythona

W sekcji zmienne systemowe

  1. usunięto wszelkie odniesienia do ścieżek Pythona

Utworzyłem pliki wsadowe dla każdej instalacji Pythona (np. Dla 3.4 x64

Name = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) tylko do zapamiętania.

Zawartość pliku =

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

     setx PathPython %PathPython%

Aby przełączać się między wersjami, wykonuję plik wsadowy w trybie administratora.

!!!!! Zmiany będą obowiązywać dla okien wiersza polecenia KOLEJNE OTWARTE. !!!

Więc mam nad tym dokładną kontrolę.


0

Najłatwiejszy sposób uruchamiania wielu wersji Pythona w systemie Windows jest opisany poniżej w następujący sposób: -

1) Pobierz najnowsze wersje Pythona z python.org/downloads , wybierając odpowiednią wersję dla swojego systemu.

2) Uruchom instalator i wybierz Dodaj python 3.x do ścieżki, aby automatycznie ustawić ścieżkę w pythonie 3 (wystarczy kliknąć pole wyboru). W przypadku pythona 2 otwórz instalator pythona 2, wybierz dowolne preferencje, ale pamiętaj tylko, aby ustawić opcję Dodaj python.exe do ścieżki na Zostanie zainstalowany na lokalnym dysku twardym.Teraz kliknij przycisk Dalej i poczekaj, aż instalator się zakończy.

3) Po zakończeniu obu instalacji. Kliknij prawym przyciskiem myszy na moim komputerze - Przejdź do właściwości - Wybierz zaawansowane ustawienia systemu - Przejdź do zmiennych środowiskowych - Kliknij nową w obszarze Zmienne systemowe i dodaj nową zmienną systemową o nazwie zmiennej jako PY_PYTHON i ustaw wartość tej zmiennej na 3 . Teraz kliknij OK i gotowe.

4) Teraz, aby to przetestować, otwórz wiersz polecenia . Gdy już tam będziesz, wpisz python lub py , powinno to otworzyć python3 .

5) Teraz wyjdź z python3, wpisując exit () . Teraz wpisz py -2 , powinno otworzyć się python 2.

Jeśli nic z tego nie zadziała, uruchom ponownie komputer, a jeśli problem nadal występuje, odinstaluj wszystko i powtórz kroki.

Dzięki.



-1

Używając Rapid Environment Editor , możesz wypchnąć na górę katalog żądanej instalacji Pythona. Na przykład, aby uruchomić język Python z katalogu c: \ Python27, upewnij się, że katalog c: \ Python27 znajduje się przed katalogiem c: \ Python36 lub nad nim w zmiennej środowiskowej Path. Z mojego doświadczenia wynika, że ​​pierwszy plik wykonywalny Pythona znaleziony w środowisku Path jest wykonywany. Na przykład mam zainstalowany MSYS2 z Python27 i ponieważ dodałem C: \ MSYS2 do ścieżki przed C: \ Python36, python.exe z folderu C: \ MSYS2 .... jest wykonywany.


-4

Po prostu wywołaj właściwy plik wykonywalny


obecnie pracuję nad 2.5. po prostu wyjaśnij mi, jak mogę również uruchomić 2.6. w wierszu poleceń systemu Windows musiałem napisać „python”, aby wejść do powłoki Pythona. i wynosi 2,5. na dysku c miałem zainstalowane obie wersje.
Bilal Basharat,

Zamiast pythonwchodzić do powłoki spróbuj python2.5lub python2.6. Nie jestem użytkownikiem Windows, ale na UNIX / usr / bin / python jest zwykle aliasem do wykwalifikowanego wykonywalnego, jestem przy założeniu, pyton w Windows jest zainstalowany w podobny sposób
Albertov

1
W systemie Windows nazwa pliku wykonywalnego to zawsze python.exe, ale zmieniasz ścieżkę do pliku wykonywalnego. Jednak zostało to już kilkakrotnie wyjaśnione.
jgritty,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.