私はWindowsを実行していて、コマンドラインでプログラムを実行すると、レジストリ設定に基づいてシェル/ OSが自動的にPythonを実行します。同じマシンにバージョン2.xと3.xのPythonをインストールすると、問題が発生しますか?
同じマシンで2.xスクリプトを実行しながら、Python 3を試してみたいと思います。
私はWindowsを実行していて、コマンドラインでプログラムを実行すると、レジストリ設定に基づいてシェル/ OSが自動的にPythonを実行します。同じマシンにバージョン2.xと3.xのPythonをインストールすると、問題が発生しますか?
同じマシンで2.xスクリプトを実行しながら、Python 3を試してみたいと思います。
回答:
共存のための公式の解決策は、Python 3.3.0に含まれていたWindows用のPythonランチャー、PEP 397のようです。リリースダンプとランチャーを()にインストールすると、それぞれとスクリプトに関連付けられます。py.exe
pyw.exe
%SYSTEMROOT%
C:\Windows
py
pyw
新しいランチャーを使用するには(手動で独自の関連付けを設定せずに)、[拡張機能の登録]オプションを有効のままにします。理由はよくわかりませんが、私のマシンではPy 2.7が(ランチャーの)「デフォルト」のままになっています。
コマンドラインから直接スクリプトを呼び出してスクリプトを実行すると、ランチャーを通じてスクリプトがルーティングされ、シバン(存在する場合)が解析されます。ランチャーを明示的に呼び出してスイッチを使用することもできますpy -3 mypy2script.py
。
すべての方法のシバンはうまくいくようです
#!C:\Python33\python.exe
#!python3
#!/usr/bin/env python3
同様に不当な虐待
#! notepad.exe
where.exe pip
。Python 3インストーラーはpip3
そのpipのエイリアスをインストールすると思いますが、私のようなこともできpy -3 -m pip install requests
ます。
これが私の設定です:
C:\Python34
(デフォルトのインストールパス)に移動し、python.exeをpython3.exeに変更します。C:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;
コマンドラインpython
で2.7とpython3
3.4に使用できます。
pip
cli についてはどうですか?
pip
し、pip3
それぞれ。
両方をインストールできます。
これはスクリプトの前に書く必要があります。
#!/bin/env python2.7
または、最終的に...
#!/bin/env python3.6
私のソリューションはUnixで完全に動作します。Googleで簡単に検索した後、Windowsソリューションを次に示します。
#!c:/Python/python3_6.exe -u
同じこと:スクリプトの前。
バージョン3.3以降、PythonはLauncher for Windowsユーティリティhttps://docs.python.org/3/using/windows.html#python-launcher-for-windowsを導入しました。
したがって、Pythonの複数のバージョンを使用できるようにするには:
py -3 filename.py
。
次の形式の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.bat
)python2 file.py
どこからでも使えます。
ただし、これはWindowsファイルの関連付け状況に役立ちません。そのためには、#!
行を読み取り、それを.pyおよび.pywファイルに関連付けるランチャープログラムが必要です。
両方を環境変数に追加すると、2つの実行可能ファイルの名前が同じになるため、競合が発生しますpython.exe
。
そのうちの1つの名前を変更するだけです。私の場合、名前をに変更しましたpython3.exe
。
したがって、python
実行python.exe
すると2.7でpython3
実行され、実行python3.exe
すると3.6で実行されます
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" '
。
どうぞ...
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があります。うまくいかない場合は、ここに修正を投稿してください。
sys.exit(process.returncode)
呼び出されたスクリプトの終了ステータスを呼び出し元に伝播するために使用する方が良いでしょう。
私の知る限り、Pythonはレジストリ設定ではなくPATH変数を使用してコマンドラインから実行されます。
したがって、PATHで正しいバージョンを指す場合は、それを使用します。新しいPATH設定を使用するには、コマンドプロンプトを必ず再起動してください。
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
軽量に関連付けられたプログラム:人々は、Windows用のPythonランチャーに取り組んできた.py
し、.pyw
最初の行に「シェバング」行(Linuxのに似ら)を探しますファイルを、そして打ち上げのPython 2.xまたは3.xがよいます必須。詳細については、「Windows用Pythonランチャー」ブログ投稿を参照してください。
Anacondaを使用してみてください。
Anaconda環境の概念を使用して、プログラミングを学ぶにはPython 3が必要だが、Pythonを更新してPython 2.7環境を一掃したくないとします。「snakes」という名前の新しい環境(または必要なもの)を作成してアクティブ化し、最新バージョンのPython 3を次のようにインストールできます。
conda create --name snakes python=3
思ったよりシンプルなので、こちらの紹介ページをご覧ください。Anacondaの使用開始
そして、バージョン2.xと3.xを並行して実行するという特定の問題を処理するには、「Anacondaを使用したPythonバージョンの管理」を参照してください。
の Windows版 Pythonランチャーは、スタンドアローンが初めてデビューした2011年に約束されたように、バージョン3.3以降、Pythonに組み込まれました。
以下は、WindowsにPython2とPython3をインストールするためのきちんとした方法です。
私の場合: Apache cassandraをインストールする必要がありました。私はすでにD:ドライブに Python3をインストールしました。大量の開発作業が進行中のため、Python3インストールを台無しにしたくありませんでした。また、Apache cassandraにのみPython2が必要でした。
だから私は次のステップを踏みました:
C:\Python27;C:\Python27\Scripts
)そのため、私のPython3インストールはそのまま残りました。
インストーラーで.pyファイルのWindowsファイルの関連付けを設定するオプションがあると思います。チェックを外すと大丈夫です。
そうでない場合は、.pyファイルを以前のバージョンに簡単に再度関連付けることができます。最も簡単な方法は、.pyファイルを右クリックし、「プログラムから開く」/「プログラムを選択」を選択することです。表示されるダイアログで、デフォルトで使用するPythonのバージョンを選択または参照し、[常にこのプログラムを使用してこの種類のファイルを開く]チェックボックスをオンにします。
両方を同時に勇気をもってインストールする前に、非常に多くの質問がありました。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ファイルやその他のファイルにも同じことができます。
乾杯!
私はそう思うでしょう、同じコンピューターにPython 2.4、2.5、2.6を並べてインストールしています。
私は今、pythonを始めたばかりです。私はZed Shawの著書「Learn Python the Hard Way」を読んでいますが、これにはpythonバージョン2.xが必要ですが、python 3.xが必要なクラスも取り入れています。
これが私がしたことです。
"[ENVIRONMENT] :: SETENVIRONMENTVARIABLE(" PATH "、" $ ENV:PATH; C:\ PYTHON27 "、" USER ")"(外部引用符なし)
今すぐPython 3.x
シンプルなpython 3.xダウンロードには、Windowsアプリ用のpythonが付属しています。Windows版Pythonアプリをタスクバーに固定するか、デスクトップへのショートカットを作成すれば完了です。
3.x用のWindows用Pythonを開く
Python 2.xのPowershellを開く
これが役に立てば幸いです!
Hmm..IだけでWindows用のPython 3.6.5をダウンロードして、今これをしなかったhttps://www.python.org/downloads/release/python-365/とランチャーがインストールされることを確認しました。その後、私は、Python 2とPython 3を再起動し、プロンプトのコマンドを使用するための指示に従った後、使用してpy -2.7
Pythonの2を使用し、py
またはpy -3.6
あなたが使用することもできPythonの3を使用してpip2
Pythonの2のためにpip
とpip
Pythonの3人のためにpip
。
ほとんどの作業でpython3を使用したいのと同じ問題がありましたが、IDAプロにはpython2が必要でした。SO、これが私がやったことです。
最初に、次のようにユーザー環境変数に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バージョンを変更します。
/usr/bin/python
とPython 3.3をインストールし/usr/bin/python3
ます。Python3のPipとIPythonにも異なる名前を付けます。とても便利な。