Python 3.xと2.xを同じWindowsコンピューターにインストールできますか?


156

私はWindowsを実行していて、コマンドラインでプログラムを実行すると、レジストリ設定に基づいてシェル/ OSが自動的にPythonを実行します。同じマシンにバージョン2.xと3.xのPythonをインストールすると、問題が発生しますか?

同じマシンで2.xスクリプトを実行しながら、Python 3を試してみたいと思います。


1
私のディストリビューションであるFedoraでは、Python 2.7 /usr/bin/pythonとPython 3.3をインストールし/usr/bin/python3ます。Python3のPipとIPythonにも異なる名前を付けます。とても便利な。
大佐パニック

19
@user-精神的に私はあなたの応答に同意しますが、私はその精神に何度も火をつけられたので、誰かが飛躍する前になぜ尋ねるのか理解しています。
Peter Hanley

ここでの答えは、どのpythonをいつ実行するかを選択する方法に関するすべてのようです。私の問題は、「この製品の別のバージョンがすでにインストールされている」と表示されているため、インストーラー(3.6.2)が実行されないことでした。すでに3.6.3がインストールされていることがわかりました。
ヨーヨー

回答:


66

共存のための公式の解決策は、Python 3.3.0に含まれていたWindows用Pythonランチャー、PEP 397のようです。リリースダンプとランチャーを()にインストールすると、それぞれとスクリプトに関連付けられます。py.exepyw.exe%SYSTEMROOT%C:\Windowspypyw

新しいランチャーを使用するには(手動で独自の関連付けを設定せずに)、[拡張機能の登録]オプションを有効のままにします。理由はよくわかりませんが、私のマシンではPy 2.7が(ランチャーの)「デフォルト」のままになっています。

コマンドラインから直接スクリプトを呼び出してスクリプトを実行すると、ランチャーを通じてスクリプトがルーティングされ、シバン(存在する場合)が解析されます。ランチャーを明示的に呼び出してスイッチを使用することもできますpy -3 mypy2script.py

すべての方法のシバンはうまくいくようです

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

同様に不当な虐待

  • #! notepad.exe

「彼ら」は、pylauncherをWindows用の現在のPython 2ディストリビューションに含める必要があります(または、それが利用可能であり、どこで入手できるかを人々に知ってもらう必要があります)。
martineau 2013年

1
たぶん、でも、Python 2の世界に住んでいるだけの場合は、それほど大きな問題ではありません。
Nick T

このランチャーは、少なくとも2012
でした。– Smit Johnth


1
@Mooncraterでは、どちらで使用するかを確認できますwhere.exe pip。Python 3インストーラーはpip3そのpipのエイリアスをインストールすると思いますが、私のようなこともできpy -3 -m pip install requestsます。
Nick T

41

これが私の設定です:

  1. WindowsインストーラーでPython 2.7と3.4の両方をインストールします。
  2. C:\Python34(デフォルトのインストールパス)に移動し、python.exeをpython3.exeに変更します。
  3. 含めるように環境変数編集しますC:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

コマンドラインpythonで2.7とpython33.4に使用できます。


3
たとえば、pipcli についてはどうですか?
クリスチャン

3
最新バージョンのpython 2&3には、pipが付属しています。だから、使用することができますpipし、pip3それぞれ。
Alistair Martin

8
これらすべてのユーティリティの名前を変更する必要があることを指摘しただけでした。それでも、たとえばpython3が明示的に(たとえば、ハードコードされて)pip3ではなくpipを呼び出すと、問題が発生するリスクがあります。
クリスチャン

これは悪い考えです。すべての名前を変更してしまい、pipはそのように機能しません。
bhansa 2017年

python3でのpipの問題の実行を停止します。最初のpython3インストールウィザードからUNSLECT "install pip"が必要です。次にpython3.7 / python.exeの名前をpython3.exeに変更し、get-pip.pyをダウンロードしてpython3.exe get-pip.pyを実行します。したがって、pip3は、名前が変更されたpython3.exeが元の/python3.7/python.exeではなくpython3用であることを認識しています
Junchen Liu

36

両方をインストールできます。

これはスクリプトの前に書く必要があります。

#!/bin/env python2.7

または、最終的に...

#!/bin/env python3.6

更新

私のソリューションはUnixで完全に動作します。Googleで簡単に検索した後、Windowsソリューションを次に示します。

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

同じこと:スクリプトの前。


それは、Linuxにインストールでき、Windowsにもインストールできます。env変数を設定するだけです。Windowsで設定できます...
Patrick Desjardins

7
このソリューションはWindowsでは機能しません(UNIXスタイルのシェル(たとえばcygwin)から呼び出さない限り)。#!シェルによって処理され、ウィンドウはそれをサポートしていません。私はあなたがそれをグーグルでググった例がウィンドウズで発射されるのではなくウェブサーバーによって処理されていると信じています
ブライアン

はい、Windows上のApacheでは...質問リクエストシェルは自動的に、Cygwin、Apacheなどで実行できます...
Patrick Desjardins

@Daok:私はあなたに反対票を投じなかった。助けようとしても助けてくれてありがたいです。
ミント

4
使える pylauncherをして、このような作業を行う(PEP
397-

33

バージョン3.3以降、PythonはLauncher for Windowsユーティリティhttps://docs.python.org/3/using/windows.html#python-launcher-for-windowsを導入しました。

したがって、Pythonの複数のバージョンを使用できるようにするには:

  1. Python 2.xをインストールします(xは必要なバージョンです)
  2. Python 3.xをインストールします(xは必要な任意のバージョンであり、バージョン3.x> = 3.3が1つ必要です)
  3. コマンドプロンプトを開く
  4. 入力PY -2.xのPython 2.xのを起動するには
  5. 入力PY -3.xのPython 3.xのを起動するには

1
IDEを使用する人はどうですか?これも機能しますか?
emorphus

1
@emorphus IDEに依存すると思いますが、一般的にはインタープリターのバージョンを選択できるはずです。したがって、複数のPythonバージョンがインストールされている場合は、プロジェクトで使用するバージョンを選択してください。また、IDEのターミナルはコマンドプロンプトと同じように機能するため、これらのコマンドもそこで機能します。
Ivan Kucerak 16

2
これはIMOの最高のソリューションであり、最初から完璧に機能します。-3.xがなくてもかまいませんpy -3 filename.py
OmegaNalphA 2018

9

次の形式の1行のバッチスクリプトを使用して、シェルから2.5、2.6、および3.0を使用しています。

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

それらに名前pythonX.Y.batを付け、PATHのどこかに配置します。優先マイナーバージョン(つまり最新)のファイルをにコピーしますpythonX.bat。(例copy python2.6.bat python2.batpython2 file.pyどこからでも使えます。

ただし、これはWindowsファイルの関連付け状況に役立ちません。そのためには、#!行を読み取り、それを.pyおよび.pywファイルに関連付けるランチャープログラムが必要です。


Patrick Desjardinsの回答についての私のコメントを参照しください。
martineau 2013年

8

両方を環境変数に追加すると、2つの実行可能ファイルの名前が同じになるため、競合が発生しますpython.exe

そのうちの1つの名前を変更するだけです。私の場合、名前をに変更しましたpython3.exe

したがって、python実行python.exeすると2.7でpython3実行され、実行python3.exeすると3.6で実行されます

ここに画像の説明を入力してください


メモ部分について詳しく説明していただけますか?pythonの名前をpython3に変更すると、pip.exe、pip3.exe、pip3.7.exeはすべてpython.exeに依存しているように見えるため、pipを実行できなくなります。pipを実行すると、エラー=>が発生します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、

私がこの問題を抱えていなかったのかわかりません
Charif DZ

@MandarSadyeメモ帳でpip.exeを開いてpython.exeを検索できます。次に、python.exeをpython3.exeに置き換えます
atg

7

どうぞ...

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)

私はこのスレッドを読んでこれをたたきました(それも私が必要としていたものだからです)。UbuntuとWindowsの両方にPython 2.6.1と3.0.1があります。うまくいかない場合は、ここに修正を投稿してください。


1
sys.exit(process.returncode)呼び出されたスクリプトの終了ステータスを呼び出し元に伝播するために使用する方が良いでしょう。
martineau

4

私の知る限り、Pythonはレジストリ設定ではなくPATH変数を使用してコマンドラインから実行されます。

したがって、PATHで正しいバージョンを指す場合は、それを使用します。新しいPATH設定を使用するには、コマンドプロンプトを必ず再起動してください。


「python myscript.py」と入力すると、C:\ python30 \ python.exeと入力できますが、myscript.pyと入力するだけで、2を壊したくない場合は、コマンドプロンプトが自動的にこれを実行します。 ?同じマシンに3.0をインストールした場合のスクリプト。
ミント

ああ、ミンティーは、質問への最初のコメントに情報を追加するのに役立つかもしれませんが、それは少し曖昧でした。
James McMahon、

3

Pythonのインストールは通常.py.pyw.pycファイルをPythonインタープリターに関連付けます。あなたは、エクスプローラでダブルクリックするか(タイプする必要はので、コマンドラインウィンドウでその名前を入力して、いずれかのPythonスクリプトを実行することができますのでpython scriptname.py、ちょうどscriptname.py行いません)。

この関連付けを手動で変更する場合は、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

Pythonランチャー

軽量に関連付けられたプログラム:人々は、Windows用のPythonランチャーに取り組んできた.pyし、.pyw最初の行に「シェバング」行(Linuxのに似ら)を探しますファイルを、そして打ち上げのPython 2.xまたは3.xがよいます必須。詳細については、「Windows用Pythonランチャー」ブログ投稿を参照してください。


3

Anacondaを使用してみてください。

Anaconda環境の概念を使用して、プログラミングを学ぶにはPython 3が必要だが、Pythonを更新してPython 2.7環境を一掃したくないとします。「snakes」という名前の新しい環境(または必要なもの)を作成してアクティブ化し、最新バージョンのPython 3を次のようにインストールできます。

conda create --name snakes python=3

思ったよりシンプルなので、こちらの紹介ページをご覧ください。Anacondaの使用開始

そして、バージョン2.xと3.xを並行して実行するという特定の問題を処理するには、「Anacondaを使用したPythonバージョンの管理」を参照してください。


Anacondaの紹介リンクが壊れています。
アレックス2018年

1
「Getting Started with Anaconda」へのリンクを修正しました。
Cale Sweeney

2
@JeffreyCorderoリンクを修正しました。Anaconda docsは実行できますが、非表示にすることはできません。
Cale Sweeney

2

Python 2と3を同じマシンで実行する方法は次のとおりです

  1. Python 2.xをインストールする
  2. Python 3.xをインストールする
  3. Powershellを起動する
  4. Python -2」と入力して、Python 2.xを起動します。
  5. Python -3」と入力して、Python 2.xを起動します。

Windows版 Pythonランチャーは、スタンドアローンが初めてデビューした2011年に約束されたように、バージョン3.3以降、Pythonに組み込まれました。

Windows用のPythonランチャー


IDEを使用する人はどうですか?これも機能しますか?
emorphus

2

以下は、WindowsにPython2とPython3をインストールするためのきちんとした方法です。

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

私の場合: Apache cassandraをインストールする必要がありました。私はすでにD:ドライブに Python3をインストールしました。大量の開発作業が進行中のため、Python3インストールを台無しにしたくありませんでした。また、Apache cassandraにのみPython2が必要でした。

だから私は次のステップを踏みました:

  1. ダウンロードしてインストールしたPython2。
  2. Python2エントリをクラスパスに追加しました(C:\Python27;C:\Python27\Scripts
  3. python.exepython2.exeに変更しました(下の画像を参照)

ここに画像の説明を入力してください

  1. これで両方を実行できます。Python 2(python2 --version)およびPython 3(python --version)の場合。 ここに画像の説明を入力してください

そのため、私のPython3インストールはそのまま残りました。


1

インストーラーで.pyファイルのWindowsファイルの関連付けを設定するオプションがあると思います。チェックを外すと大丈夫です。

そうでない場合は、.pyファイルを以前のバージョンに簡単に再度関連付けることができます。最も簡単な方法は、.pyファイルを右クリックし、「プログラムから開く」/「プログラムを選択」を選択することです。表示されるダイアログで、デフォルトで使用するPythonのバージョンを選択または参照し、[常にこのプログラムを使用してこの種類のファイルを開く]チェックボックスをオンにします。


これは私がやったことです。Windows Vistaボックスに2.5.2と3.0.1が残っています。インストールウィザードでチェックを外しました(「システムに登録」のようなメッセージが表示された可能性があります-忘れました)。どちらも正常に動作します。コマンドラインのものについては、py.batファイルを自分のパスに入れてpython 3を開始します-特別なことはしませんが、必要なことは行います。
Anon

1

PATH環境変数に両方のpython.exeファイルが含まれていないこと(スクリプトを毎日実行するために現在使用しているファイルを追加すること)を確認するか、Knihtがバッチファイルで提案したように実行する必要があります。それを除けば、なぜかわかりません。

PS:「プライマリ」 Python として2.6 、「プレイ」 Python として3.0をインストールしています。2.6はPATHに含まれています。すべて正常に動作します。


1

両方を同時に勇気をもってインストールする前に、非常に多くの質問がありました。pythonを指定すると、py2が必要なときにpy3に移動しますか?pip / virtualenvはpy2 / 3で発生しますか?

今はとてもシンプルなようです。

両方を盲目的にインストールするだけです。正しいタイプ(x64 / x32)を取得していることを確認してください。インストール中/インストール後に、環境変数へのパスを必ず追加してください。

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

上記のコマンドのxを置き換えてパスを設定します。

次に、両方のフォルダに移動します。

案内する

python3.6/Scripts/

そして、pipの名前をpip3に変更します。

pip3がすでに存在する場合は、pipを削除します。これにより、pipがpython2確実に実行されます。次の方法で確認できます。

pip --version

python3で pipを使用したい場合は、単に使用してください

pip3 install 

同様に、Pythonファイルやその他のファイルにも同じことができます。

乾杯!


1

簡単に、両方のpythonバージョンをインストールした後、環境変数へのパスを追加します。を参照してください環境変数の設定。その後のpython 2とPython 3のフォルダに移動して示すように、それぞれpython2とのpython3にそれらの名前を変更ここにpython2してここにpython3。次に、cmdでpython2またはpython3と入力して、必要なバージョンを使用しますここに


0

私はそう思うでしょう、同じコンピューターにPython 2.4、2.5、2.6を並べてインストールしています。


2.xの複数のバージョンでの作業ですが、mintyは2.xを3.xと一緒に実行できるかどうかを尋ねています。2つの間にいくつかの重要な違いがあります。参照: 2.xと3.xの違い
Cale Sweeney

0

私は今、pythonを始めたばかりです。私はZed Shawの著書「Learn Python the Hard Way」を読んでいますが、これにはpythonバージョン2.xが必要ですが、python 3.xが必要なクラスも取り入れています。

これが私がしたことです。

  1. python 2.7をダウンロード
  2. Power Shellを実行します(Windowsに既にインストールされているはずです)
  3. pythonをPOWERSHELLで実行します(認識しない場合は、手順4に進みます)
  4. powershellが次の python 2.7タイプを認識しない場合のみ

"[ENVIRONMENT] :: SETENVIRONMENTVARIABLE(" PATH "、" $ ENV:PATH; C:\ PYTHON27 "、" USER ")"(外部引用符なし)

  1. pythonと入力すると、python 2.7と表示されるはずです。

今すぐPython 3.x

シンプルなpython 3.xダウンロードには、Windowsアプリ用のpythonが付属しています。Windows版Pythonアプリをタスクバーに固定するか、デスクトップへのショートカットを作成すれば完了です。

3.x用のWindows用Pythonを開く

Python 2.xのPowershellを開く

これが役に立てば幸いです!


0

Hmm..IだけでWindows用のPython 3.6.5をダウンロードして、今これをしなかったhttps://www.python.org/downloads/release/python-365/とランチャーがインストールされることを確認しました。その後、私は、Python 2とPython 3を再起動し、プロンプトのコマンドを使用するための指示に従った後、使用してpy -2.7Pythonの2を使用し、pyまたはpy -3.6あなたが使用することもできPythonの3を使用してpip2Pythonの2のためにpippipPythonの3人のためにpip


0

ほとんどの作業でpython3を使用したいのと同じ問題がありましたが、IDAプロにはpython2が必要でした。SO、これが私がやったことです。

最初に、次のようにユーザー環境変数に3つの変数を作成しました。

  1. PYTHON_ACTIVE:これは最初は空です
  2. HOME_PYTHON27:Python 2がインストールされているフォルダーへのパスがあります。例えば。「; / scripts;」
  3. HOME_PYTHON38:python 2と同様に、この変数にはpython 3フォルダーへのパスが含まれています。

今追加しました

%PYTHON_ACTIVE%

PATH変数に。つまり、この「PYTHON_ACTIVE」に含まれているものはすべてアクティブなpythonであると基本的に言っています。「PYTHON_ACTIVE」の包含をプログラムで変更して、Pythonのバージョンを切り替えます。

次にスクリプトの例を示します。

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

このスクリプトは入力としてpythonバージョンを取り、それに応じてHOME_PYTHON27またはHOME_PYTHON38をPYTHON_ACTIVEにコピーします。したがって、グローバルPythonバージョンを変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.