私の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になりますか。
おそらく、実際にはデフォルトの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内で作業を行います。
/usr/local/bin
よりも先に、/usr/bin
をあなたのPATH
name__環境変数に追加してください。
通常これはあなたのシェルのrcファイルで行われます。 bashの場合は、これを.bashrc
に入れます。
export PATH="/usr/local/bin:$PATH"
これにより、シェルは/usr/local/bin
内のものと一致する前に、まず/usr/bin
内のpython
name__を検索します。
(もちろん、これはまた/usr/local/bin/python
がpython2.7
を指すようにする必要があることを意味します - それがまだない場合は、シンボリックリンクする必要があります。)
コマンドを入力してください
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
詳細については、help
、copyright
、credits
、またはlicense
と入力してください。
以下によって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)
すべての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"