web-dev-qa-db-ja.com

Linux上の2つのバージョンのpython。 2.7をデフォルトにする方法

私のlinuxboxには2つのバージョンのpythonがあります。

$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python

2.7をデフォルトのバージョンにするにはどうすればよいのですか。pythonと入力すると2.7になりますか。

117
Anthony

おそらく、実際にはデフォルトのPythonを変更したくないでしょう。

ディストリビューションは標準システムPythonを/usr/binにインストールし、これに依存するスクリプトが存在し、#! /usr/bin/env pythonによって選択される場合があります。 通常 2.7でPython 2.6スクリプトを実行しても問題ありませんが、それを危険にさらしたいですか?

さらに、/usr/binを使用すると、パッケージマネージャーがパッケージを管理する能力が損なわれる可能性があります。また、PATH内のディレクトリの順序を変更すると、Python以外にも多くのことが影響を受けます。 (実際、/usr/local/binの前に/usr/binを置くのがより一般的であり、実際に必要なものかもしれません。しかし、逆に持っている場合、おそらくそれには十分な理由があります。)

ただし、pythonと入力したときにシステムが2.7を実行するようにデフォルトのPythonを変更するためにneedを実行しないでください。


最初に、シェルエイリアスを設定できます。

alias python=/usr/local/bin/python2.7

プロンプトでそれを入力するか、変更を永続的にしたい場合は~/.bashrcに入力し、今はyo type pythonで、選択した2.7を実行しますが、システム上の一部のプログラムは、/usr/bin/env pythonを使用してスクリプトを実行しようとし、標準2.6を実行します。


別の方法として、2.7から 仮想環境 (または異なるプロジェクト用の個別のvenv)を作成し、venv内で作業を行います。

169
abarnert

/usr/local/binよりも先に、/usr/binをあなたのPATHname__環境変数に追加してください。

通常これはあなたのシェルのrcファイルで行われます。 bashの場合は、これを.bashrcに入れます。

export PATH="/usr/local/bin:$PATH"

これにより、シェルは/usr/local/bin内のものと一致する前に、まず/usr/bin内のpythonname__を検索します。

(もちろん、これはまた/usr/local/bin/pythonpython2.7を指すようにする必要があることを意味します - それがまだない場合は、シンボリックリンクする必要があります。)

18
Amber

コマンドを入力してください

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

ここでは、このようなものを見ることができます

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7

デフォルトのpython2.7は、テキスト「python」にソフトリンクされています

だから、ソフトリンクのPythonを削除してください

Sudo rm -r python

その後、上記のコマンドを再試行してください

ls -l

ソフトリンクが削除されていることがわかります

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7

次に、python3.6の新しいソフトリンクを作成します

ln -s /usr/bin/python3.6 python

次に、ターミナルでコマンドpythonを試してください

//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux

詳細については、helpcopyrightcredits、またはlicenseと入力してください。

1
Sreenath

以下によってpythonの現在のバージョンを確認してください。

$ python --version

それからpythonがどのファイルへのシンボリックリンクかを確認してください。

  $ ll /usr/bin/python

出力例:

 lrwxrwxrwx 1 root root 9 Jun 16  2014 /usr/bin/python -> python2.7*

他のpythonのバージョンを確認してください。

$ ls /usr/bin/python*

出力例:

/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.4         /usr/bin/python3.4m-config  /usr/bin/python3.6m         /usr/bin/python3m
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.4-config  /usr/bin/python3.6          /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.4m        /usr/bin/python3.6-config   /usr/bin/python3-config     /usr/bin/python-config

現在のバージョンのPythonを3.6バージョンに変更したい場合は、ファイル〜/ .bashrcを編集してください。

vim ~/.bashrc

ファイルの末尾に次の行を追加して保存します。

alias python=/usr/local/bin/python3.6

Python 3.6用のpipをインストールするには

$ Sudo apt-get install python3.6 python3.6-dev
$ Sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | Sudo python3.6
$ Sudo easy_install pip

成功したら、pipの現在のバージョンを確認します。

$ pip3 -V

出力例:

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
1
ShivBuyya

すべてのOSにはデフォルトバージョンのpythonが付属しており、/ usr/binにあります。 OSに付属するすべてのスクリプト(例:yum)は、/ usr/binにあるこのバージョンのpythonを指しています。新しいバージョンのpythonをインストールしたいとき、新しいバージョンのpythonでは動作しないかもしれない既存のスクリプトを壊したくありません。

これを行う正しい方法は、pythonを代替バージョンとしてインストールすることです。

e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall

これを実行することによって、yumのような既存のスクリプトはまだ/ usr/bin/pythonで動作します。そしてあなたのデフォルトのpythonバージョンは/ usr/local/binにインストールされたものになるでしょう。つまり、pythonと入力すると2.7.3となります。

これは起こります。 $ PATH変数は、usr/binの前に/ usr/local/binを持ちます。

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

それでもpython2.7がデフォルトのpythonバージョンとして有効にならない場合は、実行する必要があります。

export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
0
Prakash Kamath