web-dev-qa-db-ja.com

アンインストールせずにPythonの複数のバージョンを使用する方法

私は独特の状況に直面しています。少し些細なことですが、苦痛です。

NLTKはPython 3(これが私が収集できるもの)に移植されていないため、Python 2.6.6を使用する必要があります。

別のコード(同時に動作している)には、Python 3でのみ使用可能で、Python 2.6.6では使用できない)コレクションカウンター関数があります。

したがって、2つのコードを切り替えるたびに、バージョンをインストールおよびアンインストールする必要があります。それはとても時間の無駄です。

使用したいバージョンを指定する方法について何か提案はありますか?

13
Learnerbeaver

インストールPython

Python3.3以降ではpy.exeWindowsフォルダに。 [ link ]この実行可能ファイルは、ファイルの最初の行でpythonバージョンを決定するために使用されます:

#!/usr/bin/python2.7

Python 2.7で実行されます。他のPythonバージョンをインストールした後、Python 3バージョンをインストールする必要があります。

追加のリソース: https://docs.python.org/3/using/windows.html#customization

pywinhttps://pypi.python.org/pypi/pywin

古い解決策

私はあなたが窓を使うと思います。私はこの問題をハックで解決しました:

Windowsでpythonを開始するたびに、python.batが使用されます。これにより、ファイルのヘッダーを分析するpython.pyが開始されます#! for the = pythonバージョン。

Example.pyを開始するには、コンソールに入力します

python example.py

ただし、klickごとに開始することもできます。

これは私のpythonファイルC:\ bin\python.py

#!/usr/bin/env python2
import sys
import os
args = sys.argv
if len(args) <= 1:
    # no arguments
    # start python console
    i = os.system('C:\bin\python2.bat' + " ".join(args[1:]))
    if type(i) != int:
        i = 0
    exit(i)

def analyse(filename, default = ''):
    '''=> '2', '3', default '''
    try:
        f = open(filename)
    except IOError:
        # file not found
        return default
    firstLine = f.readline()
    if firstLine.startswith('#!'):
        if 'python2' in firstLine:
            return '2'
        if 'python3' in firstLine:
            return '3'
        i = firstLine.find(' ')
        if i != -1:
            # analyse from end of path on
            in2 = '2' in firstLine[i:]
            in3 = '3' in firstLine[i:]
            if in2 and not in3:
                return '2'
            if in3 and not in2:
                return '3'
        else:
            # analyse path
            in2 = '2' in firstLine
            in3 = '3' in firstLine
            if in2 and not in3:
                return '2'
            if in3 and not in2:
                return '3'
    return default



no = analyse(args[1], default = '2')
if args[1][-1:] == 'w':
    # python win
    cmd = 'C:\bin\pythonw%s.bat'
else:
    cmd = 'C:\bin\python%s.bat'
i = os.system(cmd % no + ' ' + " ".join(args[1:]))

if type(i) != int:
    i = 0
exit(i)

これはC:\ bin\python.batファイルです

@echo off
C:\bin\python2 C:\bin\python.py %*
rem this may also work:
rem C:\bin\python.py %*

そして、あなたが始めるすべてのファイルにあなたはどちらかを入れなければなりません

#!/bin/env/python3

または

#!/bin/env/python2

デフォルトはpython2です

次に、これらのファイルをフォルダーに追加しました。

C:\ bin\python2.bat

@echo off
C:\python27\python.exe %*

C:\ bin\pythonw2.bat

@echo off
C:\python27\pythonw.exe %*

C:\ python3.bat

@echo off
C:\python32\pythonw.exe %*

C:\ bin\pythonw3.bat

@echo off
C:\python32\pythonw.exe %*

代わりにpython26を使用している場合、python27の場合は、変更する必要があります

C:\python27 

C:\python26

等々。 python not using python 32。

python files per klick)を開始することもできます

次に、これを行います。

.pyファイルを右クリック->で開く-> C:\ bin\python.batを選択

問題が発生した場合は、私に連絡するか、コメントを残してください。

18
User

複数のバージョンを別々のディレクトリにインストールするだけで、使用したいpythonバージョンでPythonプログラムを実行します。次のようになります:

C:\Python26\Python.exe thescript.py

または類似。

Virtualenvが行うことは、同じpython versionの多くの個別の「仮想」インストールを提供することです。これは完全に異なる問題であるため、とにかく。

9
Lennart Regebro

Windowsを使用している場合、PowerShellの使用を嫌がらない場合は、他の回答で説明されているように、python 2と3を別々にインストールできます。次に、次のようにします。

Set-Alias python27 [some path]\python27\python.exe 
Set-Alias python33 [some path]\python33\python.exe

各バージョンを実行するためのエイリアスを作成します。

エイリアスの保持については、次のリンクで説明されています: https://msdn.Microsoft.com/en-us/powershell/reference/5.1/Microsoft.powershell.core/about/about_aliases#saving-aliases

そのリンクで作成するプロファイルを正常にロードするには、実行ポリシーを変更する必要がある場合があります。

Set-ExecutionPolicy RemoteSigned

トリックを行う必要がありますが、実行ポリシーについて詳しく知りたい場合は、次のリンクをたどることができます: https://msdn.Microsoft.com/en-us/powershell/reference/5.1/Microsoft.powershell .core/about/about_execution_policies

6
James Brown

Virtualenvを使用すると、動的なpython環境を作成できます。Pythonのページをここで確認してください。

http://pypi.python.org/pypi/virtualenv

(システム全体ではなく)Windowsのvirtualenv内にパッケージをインストールすることに関する関連する回答済みの質問 Python Windowsパッケージをvirtualenvsにインストールできますか?

5
Bryan

Pythonbrew を使用すると、インストールが非常に簡単になり、非常に簡単にインストールして切り替えたり、異なるpythonバージョンを安全に一時的に使用したりできます。

Pythonbrewがインストールされたら:

#to install new python versions is as simple as:
pythonbrew install 2.7.2 3.2
#to use a particular version in the current Shell:
pythonbrew use 3.2
#to uninstall:
pythonbrew uninstall 2.7.2
2
fraxel

virtualenv を調べる必要があります。 pipfabricについて説明している this ブログ投稿から、それについて知りました。これもPython =開発者。

このページには、Python 2.6:で機能するcollections.Counterの実装があります。

1
Mark Byers

これがあなたが望むものかどうかはわかりませんが、私は長い間これと一緒に暮らしていました http://www.portablepython.com/

1
Thai Tran

特にNLTKにpy3.xポートがあるため、OPリクエストは少し古くなっています。 tar.gzダウンロードを使用してUbuntu13.10にnltk3.0をインストールする を参照してください。

Python3をNLTKで動作させる方法は次のとおりです。

$ Sudo apt-get install python3-pip
$ Sudo pip3 install pyyaml
$ wget http://www.nltk.org/nltk3-alpha/nltk-3.0a3.tar.gz
$ tar -xzvf nltk-3.0a3.tar.gz
$ cd nltk-3.0a3/
$ Sudo python3 setup.py install
$ python3
>>> import nltk
>>> from nltk.corpus import brown
>>> print(brown.sents()[0])
['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', 'Friday', 'an', 'investigation', 'of', "Atlanta's", 'recent', 'primary', 'election', 'produced', '``', 'no', 'evidence', "''", 'that', 'any', 'irregularities', 'took', 'place', '.']
1
alvas

私のマシン(Windows)では少なくとも3つまたは4つのバージョンのPythonを使用しています。 http://python.org/ のインストーラーは自動的にそれらを次の場所に配置しました:

c:\Python26
c:\Python27
c:\Python32

そして

c:\Python24

1台のマシンで。私は主にPython 2.7を使用します。これは、一部のアプリケーションがwxPythonを使用し、古いコンソールコードにも使用するためです。このpython.exeの名前は変更されていません。ちなみに、Python2.7はcollections.Counterもサポートしています。

c:\Python26c:\Python24は私のPATHに含まれていません。 c:\Python32\で、exeの名前がpy.exeに変更されました。このようにして、python some.pyはPython 2.7を開始し、py another.pyはPython 3.2を開始します。

0
pepr

Linuxのようにシェルについて話している場合、python 3をインストールすると、python3コマンドを使用して個別に呼び出すことができます。Python = 2は、pythonを使用して呼び出されます。

少なくともこれはUbuntuのようなシステムでの私の経験であり、他のLinux環境を使用したことはありません。

この質問はほぼ1年前のものですが、NLTKはPython 3に移植されています(または、少なくともこれを書いている時点ではそうです)。

0
user3460822

WinPython 、Windows用の優れたポータブル/インストール可能pythonディストリビューション)をご覧ください。

Portable:事前構成済みで、Windowsの任意のマシンで(要件なしで)すぐに実行でき、WinPythonを含むフォルダーは任意の場所に移動できます(ローカル、ネットワーク、またはリムーバブルドライブ)ほとんどのアプリケーション設定

Flexible:必要な数のWinPythonバージョンをインストールできます(または「use」と書く必要があります)(分離された自己矛盾のない環境など) 、それらのバージョンが同じマシン上で異なるバージョンのPython(2.7、3.3)または異なるアーキテクチャ(32ビットまたは64ビット)を実行している場合でも

また、システムのデフォルトバージョンとして特定のpythonバージョンを簡単に登録および登録解除できます。

ただし、ポータブルとして機能している場合でも、python実行可能ファイルのショートカットを作成して、パスのどこかに配置できます。異なるバージョンのショートカットに異なる名前を付けるだけです。次に、次を使用できます。

python_3_64bit_shortcut your_program.py
0
ReneSac

最も簡単な解決策:パスが場所であるファイルの名前を変更します。例: enter image description here

Shebang行で必要なバージョンを指定できます。 VM私の運用担当者がセットアップしたPython 2.6が/usr/bin/python2.6にあり、2.7が必要だったときにこれに遭遇しました。いくつかの機能。彼はそれを/usr/bin/python2.7にインストールしてくれました。

私の古いシバン:

#!/usr/bin/env python

/ usr/bin/pythonが/usr/bin/python2.6へのリンクであったため、動作を停止しました。問題を修正し、Windows、Linux、OSXで作業した結果、Shebangは次のように変更されました。

#!/usr/bin/env python2.7

どのバージョンでも機能するはずだと私は信じています。

0
Chris Doggett

python distributable:でインストールされるpyランチャーを使用できます。

py -2    # default python 2
py -2.7  # specifically python 2.7
py -3    # default python 3
py -3.7  # specifically python 3.7

特定のバージョンでスクリプトを実行する必要がある場合は、次のようにすることができます。

py -3.7 my_script.py
0
Vlad Bezden