14

私は、少し些細な、しかし苦しい、独特の状況に直面しています。

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

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

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

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

4

15 に答える 15

20

Python3 をインストールする

Python 3.3 以降ではpy.exe、Windows フォルダーに配置されます。[リンク] この実行可能ファイルは、ファイルの最初の行で Python のバージョンを特定するために使用されます。

#!/usr/bin/python2.7

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

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

パイウィン https://pypi.python.org/pypi/pywin

古いソリューション

Windowsを使用していると思います。私はハックでこの問題を解決しました:

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

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

python example.py

クリックごとに開始することもできます。

これは私の 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 %*

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

C:\python27 

C:\python26

等々。python 32 を使用していない python と同じです。

クリックごとに python ファイルを起動することもできます

次にこれを行います:

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

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

于 2012-05-05T18:13:20.413 に答える
10

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

C:\Python26\Python.exe thescript.py

または類似。

virtualenv が行うことは、同じ python バージョンの個別の「仮想」インストールを多数提供することです。それはまったく別の問題なので、何の助けにもなりません。

于 2012-05-05T17:48:33.107 に答える
6

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

于 2013-12-05T21:46:55.830 に答える
5

動的な Python 環境を作成できる virtualenv を使用します。こちらのpythonのページをご覧ください。

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

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

于 2012-05-05T17:35:13.200 に答える
2

インストールが非常に簡単な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
于 2012-05-05T17:41:29.620 に答える
1

特にNLTKにpy3.xポートがあるため、OPリクエストは少し古くなっています。tar.gz ダウンロードを使用して Ubuntu 13.10 に nltk 3.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', '.']
于 2014-03-24T18:22:16.947 に答える
1

このページには、collections.CounterPython 2.6 で動作する の実装があります。

于 2012-05-05T17:37:24.573 に答える
1

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

于 2012-05-05T17:38:47.433 に答える
1

virtualenvを調べる必要があります。これについては、Python 開発者にとって非常に便利なツールであるとについて説明しているこのブログ投稿から知りました。pipfabric

于 2012-05-05T17:35:41.867 に答える
0

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

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

c:\Python24

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

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

于 2012-05-05T20:39:28.767 に答える
0

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

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

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

于 2014-03-28T15:26:43.973 に答える
0

最も簡単な解決策:パスが場所であるファイルの名前を変更します。 ここに画像の説明を入力

于 2018-08-19T22:26:31.493 に答える
0

Python配布可能ファイルとともにインストールされる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
于 2018-06-29T15:22:38.093 に答える