CentOS7にPythonをインストールしてみる

pythonのインストール

CentOS7には、最初からPythonがインストールされている。
ただ、入ってるバージョンは「2.7.5」

$ python --version
Python 2.7.5

$ which python
/usr/bin/python

Pythonの3系は、yumで別途インストールできる。
CentOS 7.7からリポジトリ追加せずにできるようになったみたい)

$ sudo yum -y install python3

$ python3 --version
Python 3.6.8

$ which python3
/usr/bin/python3

$ python --version
Python 2.7.5

ついでに、pip3もインストールされる。

$ pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

$ which pip3
/usr/bin/pip3

pipでライブラリをインストール

下記のコマンドでインストールできる。

$ sudo pip3 install pytz

$ ls /usr/local/lib/python3.6/site-packages/
pytz  pytz-2020.4.dist-info

ユーザー権限でインストールしたい場合は「--user」を付ける。

$ pip3 install --user tqdm

$ ls /home/vagrant/.local/lib/python3.6/site-packages/
tqdm  tqdm-4.51.0.dist-info

インストール済みのライブラリはlistで確認できる。
(なぜか「--format=columns」を付けないと警告がでるので付けてる)

$ pip3 list --format=columns
Package    Version
---------- -------
pip        9.0.3
pytz       2020.4
setuptools 39.2.0
tqdm       4.51.0

補足

tオプションで指定のディレクトリにインストールすることもできる。

$ pip3 install tqdm -t /home/vagrant/tmp/

ただ、インストールするだけでは、認識されず、

$ pip3 list --format=columns
Package    Version
---------- -------
pip        9.0.3
setuptools 39.2.0

環境変数PYTHONPATHにパスを設定する必要があるみたい。

$ echo 'export PYTHONPATH="/home/vagrant/tmp:$PYTHONPATH"' >> ~/.bash_profile
$ source ~/.bash_profile

$ pip3 list --format=columns
Package    Version
---------- -------
pip        9.0.3
setuptools 39.2.0
tqdm       4.51.0

pythonのインストール(pyenvを使った場合)

pyenvのインストールに必要なものを入れておく。

$ sudo yum -y install git

公式の手順(https://github.com/pyenv/pyenv#installation)に沿ってインストール。

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

反映すると、pyenvがインストールされているのが確認できる。

$ source ~/.bash_profile

$ pyenv --version
pyenv 1.2.21

$ which pyenv
~/.pyenv/bin/pyenv

pyenvでインストールする前に、必要になりそうなものを入れておく。

$ sudo yum install openssl-devel bzip2-devel readline-devel sqlite-devel

pyenvで、最新のpythonをインストール。

$ pyenv install 3.9.0

インストールしただけでは、バージョンは変わらない。

$ python --version
Python 2.7.5

$ which python
~/.pyenv/shims/python

$ pyenv versions
* system (set by /home/vagrant/.pyenv/version)
  3.9.0

バージョンを変えるには、globalで指定する必要あり。 あと、よく分かってないが、rehashも必要。

$ pyenv global 3.9.0
$ pyenv rehash

これで、指定したバージョンが有効になる。

$ python --version
Python 3.9.0

$ pyenv versions
  system
* 3.9.0 (set by /home/vagrant/.pyenv/version)

$ cat /home/vagrant/.pyenv/version
3.9.0