web-dev-qa-db-ja.com

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

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

同じマシンで2.xスクリプトを実行しながら、Python 3で遊びたい。

140
minty

共存の公式ソリューションは Windows用PythonランチャーPython 3.3. に含まれていたPEP 397のようです。リリースダンプをpy.exeおよびpyw.exeランチャーを%SYSTEMROOT%C:\Windows)にインストールすると、それぞれpyおよびpywスクリプトに関連付けられます。

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

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

あらゆる種類のシバンが機能するようです

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

同様に不当な虐待

  • #! notepad.exe
63
Nick T

私のセットアップは次のとおりです。

  1. windows installer を使用して、Python 2.7と3.4の両方をインストールします。
  2. C:\Python34(デフォルトのインストールパス)に移動し、python.exeをpython3.exeに変更します
  3. Edit環境変数 を含むC:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

これで、コマンドラインで2.7にpythonを、3.4にpython3を使用できます。

37
Alistair Martin

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

スクリプトの前にこれを書くべきです:

#!/bin/env python2.7

または、最終的に...

#!/bin/env python3.6

更新

Google をすばやく検索した後、私のソリューションはUnixで完全に動作します。Windowsソリューションは次のとおりです。

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

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

37

バージョン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が必要です)
  3. openコマンドプロンプト
  4. タイプpy -2.xPython 2.xを起動します
  5. タイプpy -3.xPython 3.xを起動します
33
Ivan Kucerak

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

:: 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.bat)。その後、どこからでもpython2 file.pyを使用できます。

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

9
Roger Pate

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

それらのいずれかの名前を変更してください。私の場合、名前をpython3.exeに変更しました。

したがって、pythonを実行するとpython.exeが2.7になり、python3を実行するとpython3.exeが3.6になります。

enter image description here

8
Elegant Odoo

どうぞ...

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 __== "__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があります。うまくいかない場合は、ここに修正を投稿してください。

7
Nev

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

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

4
James McMahon

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ファイルに関連する軽量プログラムで、「Shebang」行を探します(Linuxなどに類似)最初の行で、必要に応じてPython 2.xまたは3.xを起動します。詳細については "A Python Windows用ランチャー" ブログ投稿をご覧ください。

3
Craig McQueen

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

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

conda create --name snakes python=3

見た目よりも簡単なので、ここの紹介ページをご覧ください: Getting Started with Anaconda

そして、バージョン2.xと3.xを並べて実行するという特定の問題に対処するには、以下を参照してください: Manacing Python Versions with Anaconda

3
Cale Sweeney

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

  1. install Python 2.x
  2. install 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ランチャー

2
rogerwamba

勇気を持って両方を同時にインストールする前に、非常に多くの質問がありました。 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ファイルなどに同じことができます。

乾杯!

2
Shreyaa Sridhar

Easy_peasy、両方のpythonバージョンをインストールした後、環境変数へのパスを追加します; see environment variable settings 。次に、python 2フォルダーとpython 3フォルダーに移動し、それらをそれぞれpython2とpython3に名前を変更します here for python2 および here for python3 。ここで、cmdでpython2またはpython3と入力して、必要なバージョンを使用します here

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

追記:2.6が"primary" pythonとして、3.0が"play" pythonとしてインストールされています。 2.6はPATHに含まれています。すべてが正常に動作します。

1
Geo

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

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

1
Brian

うーん.. https://www.python.org/downloads/release/python-365/ でWindows用のPython 3.6.5をダウンロードするだけで今すぐこれをやったランチャーがインストールされることを確認しました。次に、python 2およびpythonを使用するための指示に従いました。コマンドプロンプトを再起動し、py -2.7を使用してPython 2およびpyを使用しますまたはPythonを使用するpy -3.6 3. Python 2のpippip2を使用し、Python 3のpippipを使用することもできます。

0
FearlessFuture

私は今pythonから始めています。私はPythonバージョン2.xを必要とするZ_Shawの本「Learn python the Hard Way」を読んでいますが、python 3。バツ

だからここに私がやったことがあります。

  1. python 2.7をダウンロード
  2. power Shellを実行します(Windowsに既にインストールされている必要があります)
  3. pOWERSHELLでpythonを実行します(認識しない場合は手順4に進みます)。
  4. powershellがpython 2.7を認識しない場合のみ、以下を入力します。

「[環境] :: SETENVIRONMENTVARIABLE( "パス"、 "$ ENV:PATH; C:\ PYTHON27"、 "ユーザー")」(外部引用符なし)

  1. ここでpythonと入力すると、python 2.7が表示されます。

NOW for python 3.x

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

3.xのWindowsのPythonを開きます

python 2.xのPowershellを開きます

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

0
Davidopopoplis

そうだと思いますが、同じコンピューターにPython 2.4、2.5、2.6をサイドバイサイドでインストールしています。

0
Dan