Windowsで複数のPythonバージョンを実行する方法


170

私のマシンには2つのバージョンのPythonがインストールされていました(バージョン2.6および2.5)。1つのプロジェクトで2.6を実行し、別のプロジェクトで2.5を実行したい。

使用したいものをどのように指定できますか?

私はWindows XP SP2で作業しています。


3
質問するための良いヒントは、あなたが何を試したか、どのように失敗したかを説明することです。だから:あなたは何を試しましたか、そしてそれはどのようにしてうまくいきませんでしたか?
Lennart Regebro、2011年

Windowsでこれに関する以前の質問が見つからなかったので、タイトルを変更してそれを反映したことに注意してください。
Lennart Regebro、2011年


3.3と2.7を同時に実行したい場合、これは最も標準化された回答です。- stackoverflow.com/questions/15912063/…
Omar Tariq

回答:


135

Pythonの別のコピーを実行するのは、正しい実行可能ファイルを開始するのと同じくらい簡単です。コマンドラインから「」と入力するだけで、Pythonインスタンスを開始したと述べましたpython

これは、Windowsで%PATH%環境変数をトロールして、バッチファイル(.bat)、コマンドファイル(.cmd)、または実行するその他の実行可能ファイル(これはPATHEXT環境変数によって制御されます)のいずれかをチェックし、指定された名前と一致します。実行する正しいファイルが見つかると、ファイルが実行されます。

これで、2つのpythonバージョン2.5と2.6をインストールした場合、パスには両方のディレクトリPATH=c:\python\2.5;c:\python\2.6が含まれますが、Windowsは一致が見つかるとパスの検査を停止します。

実際に行う必要があるのは、c:\python\2.5\python.exeまたはなどのアプリケーションの一方または両方を明示的に呼び出すことですc:\python\2.6\python.exe

他の代替は、それぞれにショートカットを作成することですpython.exeそれらの呼び出し元の1 python25と他のpython26。その後、単にpython25コマンドラインで実行できます。


41
そのショートカットを作成する方法
ビラルバシャラート

8
ウィンドウが表示されているときに、ショートカットを作成するPythonバージョンが含まれているフォルダーに移動し、右クリックしてショートカットを作成します。その後、名前を変更できます。
aodj

3
長いデッドポストを掘り下げて申し訳ありませんが、.lnk拡張子を必要とせずにショートカットを機能させるにはどうすればよいですか?
Nathan Tornquist、2011年

7
ショートカットが機能しない場合は、@ FJが言ったように、単純にコピーして名前を変更できます。これに失敗すると、コマンドラインで '' mklink ''を使用してシンボリックリンクを作成できます。
aodj

7
python25とpython26というbatファイルを作成して、適切なバージョンを呼び出すようにするのが最善の方法ではないでしょうか。次に、2つのbatファイルをバイナリと一緒に配置するだけです。
Jeremy Cantrell、2013年

100

問題にさらに2つのソリューションを追加します。

  • pylauncherを使用し(Python 3.3以降を使用している場合、Python に付属しているため、インストールする必要はありません)、スクリプトにシバン行を追加します。

#! c:\[path to Python 2.5]\python.exe-Python 2.5で実行する
#! c:\[path to Python 2.6]\python.exeスクリプトの場合-Python 2.6で実行するスクリプトの場合

または、pythonコマンドを実行する代わりに、実行するpyPythonのバージョンを指定してpylauncherコマンド()を実行します。

py -2.6–バージョン2.6
py -2–最新のインストール済みバージョン2.x
py -3.4–バージョン3.4
py -3–最新のインストール済みバージョン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]

例えば

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

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

次に、最初のものをアクティブにして、このようにPython 2.5で作業でき
c:\venvs\2.5\activate
ます。Python2.6に切り替えたい場合は、

deactivate  
c:\venvs\2.6\activate

pylauncherは、2011年にスタンダードトラックとして承認されたPEP 397のプロトタイプ実装であるように見えます。ランチャーがPython for Windowsでまだ配布されていない理由、またはVinay Sajipのプロトタイプ実装しかない理由を知っていますか?
martineau 2013年

4
Pylauncherはバージョン3.3以降のPythonで配布されています-python.org/download/releases/3.3.0を参照してください。また、Vinay Sajipの実装は単なるプロトタイプではなく実装だと思います。
Piotr Dobrogost 2013年

1
説明していただきありがとうございます。IMHO pylauncherも最新のPython 2バージョンの一部として配布する必要があります。そのバージョンを使用している人は、複数のバージョンをインストールしたい人がいる可能性が高いからです(その機能と可用性を知っていれば、そうする可能性が高くなります)。
martineau 2013年

StackOverflowは複数の賛成票を許可する必要があります。あなたの答えは無限の賛成票に値します!マジどこにいるの!:Dシンプルでクリア、そしてもちろん動作します!
3bdalla 2015

非常に良い提案。2つ目(virtualenv)を使用しました。私が見つけた唯一の違いは、アクティブ化するパスに '\ scripts'を含める必要があったことですc:\venvs\2.5\scripts\activate。例:それが違いを生む場合、これはWindows 10にあります。それ以外は、魅力のように動作します、ありがとう。
Dave Marley、

53

Python 3.3以降には、Windows用の公式Pythonランチャーがありますhttp://www.python.org/dev/peps/pep-0397/)。これで、を使用し#!pythonXて、Windowsでも必要なインタープリターのバージョンを判別できます。詳細については、別のコメントを参照するか、PEP 397を参照してください。

概要:py script.py Pythonのバージョンがに記載された進水#!場合はPython 2または#!不足しています。py -3 script.py起動Pythonの3。


1
これが私が探している答えです。Windows 10をPython 2.7およびPython 3.4.3で実行しています。コマンドプロンプトで「py [python_version_number]」と入力します。例:py -3またはpyは、使用しているpythonバージョンを呼び出します。これを使用する前に環境変数を設定する必要があると思います。これは私にとって便利です。
CodeMonkey 2016年

2
@Inuka:環境変数を設定する必要はありません。Pythonインストーラーは、.py拡張子との関連付けを設定します。ランチャー自体はC:\Windows、すでににインストールされていPATHます。この方法でも、PATH変数を変更する必要はありません。
2016年

2
回答の方、ありがとうございました。このようにして、pipを呼び出すこともできます。py -2 -m pip install SomePackageまたはpy -3.4.3 -m pip install SomePackage
CodeMonkey

私はこれが最も単純で大騒ぎしないと思います。
プラサード

46

@alexanderに従って、以下のようなシンボリックリンクのセットを作成できます。それらをパスに含まれる場所に置いて、簡単に呼び出せるようにします

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

c:\ binまたはそれらを配置した場所がパスにある限り、今すぐ移動できます

> python25

4
賢いアイデア。ところでmklink、ネイティブで利用できるのはWindows Vista / 2008以降のみです。XPおよびServer 2003ではfsutil hardlink create <new filename> <existing filename>、<新しいファイル名>を使用してパスのどこかに配置または移動する代わりに、「ハードリンク」を作成できます。ただし、ハードリンクは同じドライブでのみ機能します。
martineau 2013年

これは良い解決策です。NTFSベースのファイルシステムがなくても機能するかどうかはわかりません。
meawoppl 2014年

はい、Vistaで導入されたと思われるNTFSシンボリックリンクのサポートが必要です(私は間違っている可能性があります)。XPで使用するには、別のドライバーを使用する必要があります。一般リリース前のある段階でオフになったようです。
クリストファーハケット2014年

最も簡単な最良の解決策
giantas

15
  1. Pythonをインストールする

    • C:\ Python27
    • C:\ Python36
  2. 環境変数

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. ファイル名の変更

    • C:\ Python27 \ python.exe→C:\ Python27 \ python2.exe
    • C:\ Python36 \ python.exe→C:\ Python36 \ python3.exe
  4. ピップ

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

これは多かれ少なかれ、この問題に対する実際的な解決策だと思います。これは、Pythonスクリプトを呼び出すためにショートカット/シンボリックリンクが使用されるアプローチと比較して、より便利です。ファイルの名前を変更する代わりに、バイナリ(python.exe)をコピーして貼り付け、バージョンに応じて名前を変更できます(この回答を参照)。ちなみに、 pythonコマンドはOSを混乱させるでしょう。
testuser

正解です。ありがとう〜@山茶树和葡萄树
Bright Chang

14

たとえば、3.6バージョンタイプの場合py -3.6です。あなたはまた、32ビットおよび64ビットのバージョンを持っている場合は、あなただけ入力することができますpy -3.6-64py -3.6-32


3
これは受け入れられた答えであるはずです!トンありがとう!
Xonshiz

3
ファイルの名前を変更する必要がなく、サードパーティのIDEが両方を通常どおり検出するため、これがおそらく最良の答えです。
Enchant97

あなたはより多くの説明で答えを強化することができます-このpy実行可能ファイルはどこにありますか-それはウィンドウズのみの追加ですか?これを、トップにあるクロスプラットフォームのコマンドラインスクリプトに組み込むことは可能#!/usr/bin/env python3ですか?
エド・ランドール

7

Pythonをインストールしても、他のメジャーバージョンの他のインストールは上書きされません。そのため、Python 2.5.xをインストールしてもPython 2.6.xは上書きされませんが、2.6.6をインストールすると2.6.5が上書きされます。

だからあなたはそれをインストールすることができます。次に、必要なPythonバージョンを呼び出します。例えば:

C:\Python2.5\Python.exe

Windows上のPython 2.5および

C:\Python2.6\Python.exe

Windows上のPython 2.6、または

/usr/local/bin/python-2.5

または

/usr/local/bin/python-2.6

のWindows(LinuxおよびOS Xを含む)のUnix。

Unix(LinuxおよびOS Xを含む)にインストールすると、汎用pythonコマンドがインストールされます。これは、最後にインストールしたコマンドです。ほとんどのスクリプトは明示的に/usr/local/bin/python2.5などを呼び出すため、これはほとんど問題になりません。しかし、それを実行したくない場合、そしておそらく実行したくない場合は、次のようにインストールできます。

./configure
make
sudo make altinstall

「altinstall」は、それをインストールすることを意味しますが、コマンドを置き換えるわけではないことに注意してくださいpython

Windowsではpython、私の知る限り、グローバルコマンドを取得できないため、問題はありません。


ure help plzのおかげで2番目の質問にも答えてください:一度に両方を実行するにはどうすればよいですか?2.5から2.6への切り替えに成功した
ビラルバシャラット

@Bilal Basharat:WindowsはマルチタスクOSであり、同時に2つのことを実行したい場合は、両方を起動するだけなので、質問を理解できません。
Lennart Regebro、2011年

現在私はpython2.5に取り組んでいます。2.6を実行するにはどうすればよいですか?Windowsコマンドプロンプトで「python」と入力すると、python2.5が表示されるよりもpythonシェルに入る Cドライブに両方のバージョンをインストールしました。C:\ Python2.6 \ Python.exeに移動すると、一時的にアクティブ化されたpython2.6より。C:\ Python2.6 \を離れるとすぐに、再びバージョン2.5に変わりました
Bilal Basharat

3
@Bilal Basharat:私はすでにこれに答えました。「一時的に有効」ではありません。コマンドC:\ Python2.6 \ Python.exeを使用してPython 2.6を実行し、それを実行する方法です。そして、コマンドC:\ Python2.5 \ Python.exeでPython 2.5を実行します。このようにして、両方を同時に実行します。
Lennart Regebro、2011年

1
@Bilal Basharat:C:\Python2.5またはC:\Python2.6ディレクトリがPATH環境変数に含まれている場合、使用する.exeへの異なるパスを明示的に指定してオーバーライドしない限り、対応するバージョンのPythonがデフォルトになります。
martineau


5

ここに簡単なハックがあります:

  1. 実行するPythonのバージョンのディレクトリに移動します
  2. python.exeを右クリック
  3. 選択して「ショートカットの作成
  4. そのショートカットに呼び出す名前を付けます(私はp27、p33などを使用します)
  5. そのショートカットをホームディレクトリに移動します(C:\Users\Your name
  6. コマンドプロンプトを開いて入力しますname_of_your_shortcut.lnk(私はを使用p27.lnk

1

cp c:\ python27 \ bin \ python.exe(python2.7.exeとして)

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

それらはすべてシステムパスにあります。実行するバージョンを選択してください

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

これは私のために働いた。単にcpの代わりにコピーを使用する必要があります。また、このコマンドを実行するときは、パスのどこかにいる必要があります。たとえば、c:\ python34 \ bin \ python.exeとc:\ python27 \ bin \ python.exeの両方のpythonインストールもパスに含める必要があります。(できればその順序で)。
グレゴールシュミッツ2017

1

バッチファイルを使用してWindows 7で簡単かつ効率的に切り替えます。私はこれを使用します。

環境変数ダイアログ(C:\ Windows \ System32 \ SystemPropertiesAdvanced.exe)で、

ユーザー変数セクション

  1. %pathpython%をパス環境変数に追加しました

  2. Pythonパスへの参照を削除

システム変数セクション

  1. Pythonパスへの参照を削除

すべてのPythonインストール用のバッチファイルを作成しました(3.4 x64の例)

名前= SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-)覚えておいてください。

ファイルの内容=

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

     setx PathPython %PathPython%

バージョンを切り替えるには、管理モードでバッチファイルを実行します。

!!!!! この変更は、SUBSEQUENTコマンドプロンプトウィンドウが開いている場合に有効です。!!!

だから私はそれを正確に制御しています。


0

WindowsでPythonの複数のバージョンを実行する最も簡単な方法は、次のとおりです。

1)システムに関連するバージョンを選択して、python.org / downloadsから最新バージョンのpythonをダウンロードします。

2)インストーラーを実行し、パスpython 3.xを追加を選択して、python 3でパスを自動的に設定します(チェックボックスをクリックするだけです)。あなたのpython 2インストーラアップパイソン2のオープンのために、あなたが好きな好みを選択ちょうどセットに覚えているパスに追加python.exeへのローカルハードドライブにインストールされます、今すぐ隣クリックして、仕上げにインストーラを待ちます。

3)両方のインストールが完了したとき。コンピューターを右クリックします-プロパティに移動します-システムの詳細設定を選択します-環境変数に移動します-システム変数の下の新規をクリックして変数名PY_PYTHONの新しいシステム変数を追加し、この変数の値3に設定しますOKをクリックすると完了です。

4)これをテストするには、コマンドプロンプトを開きます。そこに入るとpythonまたはpyと入力するとpython3が開きます。

5)exit()と入力してpython3を終了します。ここでpy -2と入力すると、python 2が開きます。

これが機能しない場合は、コンピューターを再起動し、問題が解決しない場合は、すべてをアンインストールして、手順を繰り返します。

ありがとう。


0

Anaconda Navigatorからグラフィカルに異なるPython開発環境を作成できます。異なるバージョンのpythonで作業しているときに同じ問題が発生したため、anacondaナビゲーターを使用して異なるpython開発環境を作成し、各環境で異なるpythonバージョンを使用しました。

これに関するヘルプドキュメントは次のとおりです。

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


-1

Rapid Environment Editor を使用して、目的のPythonインストールのディレクトリの一番上にプッシュできます。たとえば、c:\ Python27ディレクトリからpythonを起動するには、c:\ Python27ディレクトリがPath環境変数のc:\ Python36ディレクトリの前または上にあることを確認します。私の経験から、パス環境で見つかった最初のpython実行可能ファイルが実行されています。たとえば、Python27でMSYS2をインストールし、C:\ MSYS2をC:\ Python36の前のパスに追加したため、C:\ MSYS2 ....フォルダーのpython.exeが実行されています。


-4

正しい実行可能ファイルを呼び出すだけです


現在、私は2.5に取り組んでいます。2.6を実行するにはどうすればよいですか。Windowsコマンドプロンプトで、Pythonシェルに入るには「python」と書かなければなりませんでした。そしてそれは2.5です。Cドライブに両方のバージョンをインストールしました。
Bilal Basharat、2011年

pythonシェルに入る代わりに、python2.5やを試してくださいpython2.6。私はWindowsユーザーではありませんが、UNIXでは/ usr / bin / pythonは通常完全修飾実行可能ファイルのエイリアスです
。Windowsの

1
Windowsでは、実行可能ファイルの名前は常にpython.exeですが、実行可能ファイルへのパスを変更します。それはすでに何度か説明されています。
jgritty
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.