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


124

私の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になりますか?


1
私がこれをフェドーラに対して行ったとき、yumまたはapt-getは機能しなくなりました。
ユーザー

@ユーザー:ええ、私は古代のマンドラケを同様に破りました(/usr/bin/env python2.3ではなく2.6に変更すると、コマンドの半分が機能しrpm、すべてが機能しurpmiなくなりました)。
abarnert 2013年

次の手順に従って、DjangoをCentos 5:1にインストールし、Python 3.6をソースコードからインストールしました。2番目:シェルで次のコマンドを入力します "alias python = / usr / local / bin / python3.6" 3番目:次のコマンドを実行してDjangoをインストールします "pip3 install Django" 4番目: "python -m django --version" Djangoはバージョン "1.10.5"でインストールされます
showmyroutes 2017

私にとって/usr/bin/pythonは、を指すソフトリンクでしたpython2。変更しましたpython3.6
2017

回答:


173

デフォルトのPythonを実際に変更する必要はないでしょう。

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

それに加えて、モンキーを/usr/bin使用すると、パッケージを管理するパッケージマネージャーの機能が損なわれる可能性があります。また、ディレクトリの順序を変更すると、PATHPython以外にも多くの影響があります。(実際には、が/usr/local/bin前にある方が一般的/usr/binであり、それが実際に必要なものである可能性があります。ただし、逆にそれがある場合は、おそらくそれには十分な理由があります。)

ただし、を入力したときにシステムが2.7を実行するように、デフォルトのPythonを変更する必要ありませんpython


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

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

プロンプトでその種類、またはあなたにそれを置く~/.bashrcときに、変更を永続的になりたい場合は、今あなたが入力しpython、それはあなたの2.7を選択し実行しますが、でスクリプトを実行するには、システムが試行する上でいくつかのプログラムとき/usr/bin/env pythonには、標準の2.6を実行します。


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


1
:(あなたの言う通りです。残念ながら、@ rohitの回答に従って新しいsymbリンクをすでに作成していました。私のyumコマンドが機能しません!symリンクを作成し直しましたがsudo ln -sf /usr/bin/python2.6 /usr/bin/python、回避策が機能しませんか?
Anthony

@Anthony:私の推測では、/usr/bin/python実際には以前はシンボリックリンクではなく、ラッパースクリプトまたは実行可能ファイルでしたが、今では上書きしてしまい、元に戻すことができません。rpmがまだ機能している場合は、Pythonパッケージを手動でダウンロードして、なしでインストールできyumます。
abarnert 2013年

タイプしてpython2.6も、2.6インタープリターにアクセスできるので、まだそこにあります。
Anthony

7
@Anthony:そして将来、誰かが/ usr / bin(または/ usr / local以外の/ usrのどこか)の内容を変更するように言われたら、そこにあるものとメモを書き留めてください
abarnert

なんてひどい混乱だったんだ!そのスクリプトがあるかもしれない別のセントボックスがあります。そこからコピーして、このボックスの/ usr / binに置きます。うまくいくと思いますか?
Anthony

19

リストの前のにある環境変数に追加/usr/local/binします。PATH/usr/bin

通常、これはシェルのrcファイルで行われます。たとえば、bashの場合は、次のように記述します.bashrc

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

これにより、シェルは最初にpythonin を探し/usr/local/bin、その後でin を探します/usr/bin

(もちろん、これは/usr/local/bin/pythonポイントも必要であることを意味しますpython2.7-まだポイントしていない場合は、シンボリックリンクする必要があります。)


おそらく、PYTHONHOMEを適切に設定する必要がある場合があります。何かで設定されている場合は、設定を解除してください。
Marcin 2013年

1
これは、/ usr / bin自体の変更を提案するソリューションほど危険ではありませんが、それでも、OPが実際に望んでいることではないと思います。
abarnert 2013年

これは、Ubuntu 14.xから16.xにアップグレードした後に役立ちました
learn2day

4

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

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
あなたの投稿はOPの質問に対する回答ではありません。
フランク

これは私にとって非常に奇妙な問題を解決しました。ルートまたは通常のターミナルからpythonのバージョンを確認すると、3.6.8と表示されていましたが、.shを作成してpython -versionと入力すると、2.7と表示されました。上記のようにソフトリンクが存在していたことが原因でした。手順に従ってください。修正されました。ありがとう。
S4nd33p

ありがとうございました!これにより、「必要なPython 3以降」の問題が解決しました
Tamim Attafi

4

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)

2

すべての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"

-8

2.7バージョンを手動でインストールしたと思いますが、2.6はパッケージからのものですか?

簡単な答えは、Pythonパッケージをアンインストールすることです。

より複雑なものは、/ usr / localに手動でインストールしないでください。バージョン2.7のパッケージをビルドしてからアップグレードします。

パッケージの処理は、使用するディストリビューションによって異なります。


5
ほとんどの場合、Pythonパッケージはディストリビューションで必要です。CentOSはRPMベースであり、RPMおよびYUMツールの半分はPythonで記述されています。
abarnert 2013年

親愛なるマイケル、手動でインストールされたpython2.7をアンインストールするオプションをアドバイスしてください!
AVA

単純な解決策は、/ usr / local /の下にあるすべてを削除することですが、この方法では、コンパイルして手動でインストールしたすべてを削除します。/ usr / local内のどのソフトウェアにどのファイルが属しているかを追跡する良い方法はありません。このため、通常は何もインストールしないことをお勧めします。多分あなたはそこにPythonしか持っていません。/ usr / local / binにpython実行可能ファイルのみが含まれている場合は、削除しても他のものが壊れない可能性が十分にあります。
emesik 2015

2
Pythonをアンインストールしないでください。これを持ってきて。私はそれをしました、そしてそれは私のシステムを壊しました。多くのアプリがそれに依存しています。これは非常に不適切です。
Patrick Mutwiri、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.