Pythonの利用方法

最終更新日:2024年8月5日

概要

玄界には複数のバージョンのPythonがインストールされています。 moduleのloadをせずに利用可能です。


主なものとしては以下が利用可能です。

バージョン Pythonコマンド名/pipコマンド名
Python 3.6 python3/pip3
python3.6/pip3.6
Python 3.8 python3.8/pip3.8
Python 3.9 python3.9/pip3.9
Python 3.11 python3.11/pip3.11

さらに、Intel Pythonも利用可能です。 Intel Pythonを利用するには、intel moduleをload(module load intel)し、さらにintelpython moduleをload(module load intelpython)してください。


ログインノードで利用可能なPythonコマンドの例:

[ku40000105@genkai0002 ~]$ python (Tabキーでコマンドを補間)
python                    python2-debug-config      python3.6m-config         python3.9
python2                   python3                   python3.6m-x86_64-config  python3.9-config
python2.7                 python3.11                python3.8                 python3.9-x86_64-config
python2.7-config          python3.11-config         python3.8-config          python3-config
python2.7-debug           python3.11-x86_64-config  python3.8d                python-debug
python2.7-debug-config    python3.6                 python3.8d-config         python-debug-config
python2-config            python3.6-config          python3.8d-x86_64-config
python2-debug             python3.6m                python3.8-x86_64-config
[ku40000105@genkai0002 ~]$ python

ユーザレベルでのパッケージやモジュールの追加

pipコマンド(pip3など)を使うことでPythonにパッケージやモジュールを追加することが可能ですが、 玄界は共用環境であるため、 --user オプションを付加してください。 これによりパッケージのインストール先をユーザ毎のホームディレクトリ下にすることができます。 (--userオプションを付加しない場合、システムディレクトリにインストールしようとしてエラーします。)


ユーザディレクトリへパッケージやモジュールをインストールするコマンドの例:

[ku40000105@genkai0002 ~]$ pip insall パッケージ名 --user

以下に述べる仮想環境を用いる場合は、システムディレクトリではなくユーザディレクトリにインストールされたPythonを実行/更新するため、 --user オプションの追加は不要になります。


仮想環境の活用

特定のバージョンのPythonを使いたい場合や、 利用するソフトウェアにあわせてPythonのバージョンやPythonモジュールのインストール状況を切り替えて使いたいこともあるでしょう。 そのような場合にはvenvやpyenv、conda(miniconda)などの利用を検討してください。

仮想環境によって整備したプログラムやモジュールをバッチジョブ内で実行する際は、 バッチジョブスクリプト内でも仮想環境の有効化を行うことを忘れないようにしてください。


venvの利用方法

venvはPythonの仮想環境です。 仮想環境を利用するとパッケージやモジュールを仮想環境ごとに用意できるため、 プロジェクトやアプリケーションごとに別の仮想環境を用意して切り替えて利用すると便利です。

仮想環境を作成する方法(Python3.6を使う例)

python3.6 -mvenv 仮想環境名 コマンドで仮想環境を作成します。 コマンドを実行すると仮想環境名で指定したディレクトリがその場に作られます。 有効化する際はその中のファイルにアクセスすることになるため、 仮想環境の作成や有効化を行う際のディレクトリ関係に注意してください。

仮想環境を有効化/利用終了する方法

source 仮想環境名/bin/activate コマンドで仮想環境を有効化、 deactivate コマンドで利用終了します。

利用例

# 仮想環境の作成(この例ではホームディレクトリ直下のvenvサブディレクトリ内にtest1環境を作成しています)
[ku40000105@genkai0001 ~]$ python3.6 -mvenv venv/test1
# 仮想環境の有効化
[ku40000105@genkai0001 ~]$ source venv/test1/bin/activate
# test1を有効化したため、行頭に(test1)という表示が追加されました
(test1) [ku40000105@genkai0001 ~]$
# この状態でpythonやpipなどのコマンドを使おうとすると仮想環境下のものが優先されます
(test1) [ku40000105@genkai0001 ~]$ which python
~/venv/test1/bin/python
(test1) [ku40000105@genkai0001 ~]$ which pip
~/venv/test1/bin/pip
(test1) [ku40000105@genkai0001 ~]$ python --version
Python 3.6.8
(test1) [ku40000105@genkai0001 ~]$ pip --version
pip 9.0.3 from /home/pj24001603/ku40000105/venv/test1/lib64/python3.6/site-packages (python 3.6)
# 仮想環境を有効にしているときはpip installコマンドに --user を付ける必要がありません(仮想環境のディレクトリ下にインストールされます)
(test1) [ku40000105@genkai0001 ~]$ pip install pandas
Collecting pandas
  Downloading https://files.pythonhosted.org/packages/c3/e2/00cacecafbab071c787019f00ad84ca3185952f6bb9bca9550ed83870d4d/pandas-1.1.5-cp36-cp36m-manylinux1_x86_64.whl (9.5MB)
    100% |████████████████████████████████| 9.5MB 161kB/s
Collecting pytz>=2017.2 (from pandas)
  Downloading https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl (505kB)
    100% |████████████████████████████████| 512kB 2.8MB/s
Collecting numpy>=1.15.4 (from pandas)
  Downloading https://files.pythonhosted.org/packages/45/b2/6c7545bb7a38754d63048c7696804a0d947328125d81bf12beaa692c3ae3/numpy-1.19.5-cp36-cp36m-manylinux1_x86_64.whl (13.4MB)
    100% |████████████████████████████████| 13.4MB 116kB/s
Collecting python-dateutil>=2.7.3 (from pandas)
  Downloading https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229kB)
    100% |████████████████████████████████| 235kB 4.6MB/s
Collecting six>=1.5 (from python-dateutil>=2.7.3->pandas)
  Downloading https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl
Installing collected packages: pytz, numpy, six, python-dateutil, pandas
Successfully installed numpy-1.19.5 pandas-1.1.5 python-dateutil-2.9.0.post0 pytz-2024.1 six-1.16.0
You are using pip version 9.0.3, however version 24.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
# 仮想環境の利用を終了すると、 (test1) の表示が消え、pythonやpipなどのコマンドもシステムのものが優先される状態に戻ります
(test1) [ku40000105@genkai0001 ~]$ deactivate
[ku40000105@genkai0001 ~]$ which python
/usr/bin/python
[ku40000105@genkai0001 ~]$ which pip
/usr/bin/which: no pip in (/home/pj24001603/ku40000105/.local/bin:/home/pj24001603/ku40000105/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
[ku40000105@genkai0001 ~]$

pyenvの利用方法

pyenvを利用すると複数のPythonバージョンを共存させる(切り替えて利用する)ことができます。 あらかじめインストールされている以外のPythonバージョンを使いたい場合などに利用を検討してください。

インストール

pyenvをインストールするには以下のコマンドを実行してください。 ~/.pyenv ディレクトリ内に必要なファイルが配置されます。

[ku40000105@genkai0002 ~]$ curl https://pyenv.run | bash

.bashrcの末尾に以下を追記し、ログイン時にpyenvが呼び出されるようにしておきます。 (BASH以外のシェルを利用している場合は適宜対応してください。)

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

.bashrcへの修正を済ませた状態でログインし直す(シェルを起動し直す)と、pyenvコマンドが利用可能になります。 またこの時点でpythonコマンドにより実行されるPythonがpyenvに含まれるものに切り替わった状態になります。

[ku40000105@genkai0002 ~]$ which python
~/.pyenv/shims/python
[ku40000105@genkai0002 ~]$ python --version
Python 3.6.8
[ku40000105@genkai0002 ~]$

インストール可能なPythonのバージョン一覧を取得する

pyenv install --list を実行することでインストール可能なPythonの一覧が取得できます。 (多くのバージョンが表示されます。)

[ku40000105@genkai0002 ~]$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
中略
  stackless-3.5.4
  stackless-3.7.5
[ku40000105@genkai0002 ~]$

指定のバージョンのPythonをインストール/アンインストールする

pyenv install 対象バージョン を実行することで指定のバージョンのPythonをインストールできます。 (対象バージョンには pyenv install --list で表示されたものから希望のものを選びます。)

[ku40000105@genkai0002 ~]$ pyenv install 3.12.0
Downloading Python-3.12.0.tar.xz...
-> https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
Installing Python-3.12.0...
Installed Python-3.12.0 to /home/pj24001603/ku40000105/.pyenv/versions/3.12.0
[ku40000105@genkai0002 ~]$

pyenv uninstall 対象バージョン を実行することでインストールしたPythonをアンインストールできます。

インストールされているPythonのバージョン一覧を取得する

pyenv versions を実行することでインストールされているPythonのバージョン一覧が取得できます。

  • pyenvをインストールした直後の状態
[ku40000105@genkai0002 ~]$ pyenv versions
* system (set by /home/pj24001603/ku40000105/.pyenv/version)
[ku40000105@genkai0002 ~]$
  • 3.12.0をインストールしたあとの状態
[ku40000105@genkai0002 ~]$ pyenv versions
* system (set by /home/pj24001603/ku40000105/.pyenv/version)
  3.12.0
[ku40000105@genkai0002 ~]$

先頭にアスタリスク( * )が付いているものが現在使用しているPythonです。

利用するPythonを切り替える

pyenv local 環境名 または pyenv global 環境名 を実行することで 利用するPythonを切り替えることができます。 local は特定ディレクトリ内のみで指定のPythonを使うときに、 そうでない(特定ディレクトリに限らない)場合は global を使います。 なお切り替えたPython情報はログインし直しても引き継がれます。 (globalの場合は~/.pyenv/versionlocalの場合は.python-versionファイルに 現在使用しているPythonの情報が保存されています。)

[ku40000105@genkai0001 ~]$ which python
~/.pyenv/shims/python
[ku40000105@genkai0001 ~]$ python --version
Python 3.6.8
[ku40000105@genkai0001 ~]$ pyenv versions
* system (set by /home/pj24001603/ku40000105/.pyenv/version)
  3.12.0
# pyenv global でPythonを切り替えます
[ku40000105@genkai0001 ~]$ pyenv global 3.12.0
[ku40000105@genkai0001 ~]$ which python
~/.pyenv/shims/python
[ku40000105@genkai0001 ~]$ python --version
Python 3.12.0
[ku40000105@genkai0001 ~]$ pyenv versions
  system
* 3.12.0 (set by /home/pj24001603/ku40000105/.pyenv/version)
# Pythonのパスは変わっていませんが、実行されるPythonのバージョンは3.12.0に変わりました
# (pyenv versionsでは現在有効なPythonに * が表示されます)
[ku40000105@genkai0001 ~]$ logout
# 玄界からログアウトしました

# 玄界にログインし直します
$ ssh genkai
[ku40000105@genkai0001 ~]$ python --version
Python 3.12.0
[ku40000105@genkai0001 ~]$ pyenv versions
  system
* 3.12.0 (set by /home/pj24001603/ku40000105/.pyenv/version)
# ログインし直してもPythonは3.12.0のままでした
# 元に戻すにはsystemを有効にします
[ku40000105@genkai0001 ~]$ pyenv global system
[ku40000105@genkai0001 ~]$ python --version
Python 3.6.8
[ku40000105@genkai0001 ~]$ pyenv versions
* system (set by /home/pj24001603/ku40000105/.pyenv/version)
  3.12.0
[ku40000105@genkai0001 ~]$

新たにPython環境を作り利用する

pyenv virtualenv インストール済みのPythonバージョン番号 環境名 を実行することで新たなPython環境を作成することができます。 作成した環境は pyenv activate 環境名 で切り替えて利用できます。 利用終了は pyenv deactivate です。 同じPythonバージョンで異なるパッケージ構成にしたい場合などに利用してください。 (venvとはお好みで使い分けてください。)

# 3.12.0を元に新たな環境を作成します
[ku40000105@genkai0002 ~]$ pyenv virtualenv 3.12.0 test_3.12.0
# 作成した環境を有効にします
[ku40000105@genkai0001 ~]$ pyenv activate test_3.12.0
# actiavteすると行頭に環境名が表示されます
(test_3.12.0) [ku40000105@genkai0001 ~]$
# deactivateで利用を終了します
(test_3.12.0) [ku40000105@genkai0001 ~]$ pyenv deactivate
[ku40000105@genkai0001 ~]$

conda(Miniconda)の利用方法

condaはPythonを含むソフトウェアアプリケーションを管理するツール(パッケージ管理ソフト、環境管理システム)です。 含まれているソフトウェアが多いAnacondaと、主要なものに限定されているMinicondaがあります。 ここではMinicondaを利用する方法を紹介します。

Minicondaのインストール

インストール用スクリプトをダウンロードして実行します。 (-b -u -p ~/miniconda3オプションを追加しているためインストール先などの対話的な確認処理が省略されています。)

[ku40000105@genkai0001 ~]$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
[ku40000105@genkai0001 ~]$ bash ~/Miniconda3-latest-Linux-x86_64.sh -b -u -p ~/miniconda3
PREFIX=/home/pj24001603/ku40000105/miniconda3
Unpacking payload ...

Installing base environment...

Preparing transaction: ...working... done
Executing transaction: ...working... done
installation finished.
[ku40000105@genkai0001 ~]$

.bashrc ファイルの末尾に eval "$(~/miniconda3/bin/conda shell.bash hook)" と追記してログインし直すと、行頭に(base)と表示され、 conda コマンドが利用可能になります。 (必要なときだけcondaコマンドを使えるようにしたい場合は、 上記のコマンドを追記せず、condaを使うときだけ実行してください。)

$ ssh genkai
(base) [ku40000105@genkai0001 ~]$ conda --version
conda 24.4.0
(base) [ku40000105@genkai0001 ~]$

Minicondaの基本的な使い方

condaを使うとPython実行環境を新たに作ることができます。 PythonモジュールやソフトウェアはPython実行環境ごとに個別に用意されるため、 切り替えて利用すれば異なるバージョンのソフトウェアを使い分けたり、 ソフトウェアの競合を回避することができるようになります。

環境の作成は conda create -n 環境名 同時にインストールしたいモジュール で行います。 createする際に、以下のように利用するPythonのバージョンを指定することもできます。 conda create -n 環境名 python=バージョン番号

作成した環境の有効化は conda activate 有効化する環境の名前 で行います。 無効化は conda deactivate で行います。

作成した環境の一覧表示は conda info -e で行います。

Minicondaの利用例

# condaの利用準備が整った時点でcondaに含まれるPythonが利用可能な状態になっています
(base) [ku40000377@genkai0002 ~]$ which python
~/miniconda3/bin/python
(base) [ku40000377@genkai0002 ~]$ python --version
Python 3.12.4
(base) [ku40000377@genkai0002 ~]$

# Anaconda有償化対策のためにchannelの変更を行います
# (この後の各コマンドで-c conda-forge --override-channelsを付けているのもこの対応のためです)
(base) [ku40000377@genkai0002 ~]$ conda config --add channels conda-forge
(base) [ku40000377@genkai0002 ~]$ conda config --remove channels defaults
(base) [ku40000377@genkai0002 ~]$ conda config --show channels
channels:
  - conda-forge
(base) [ku40000377@genkai0002 ~]$

# conda自体を更新します
# -yを付けなかった場合は内容が正しいかの確認が行われます(この後の各コマンドも同様)
(base) [ku40000377@genkai0002 ~]$ conda update -n base conda -y -c conda-forge --override-channels
Channels:
 - conda-forge
Platform: linux-64

(中略)

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) [ku40000377@genkai0002 ~]$

# 環境を作成します
(base) [ku40000377@genkai0002 ~]$ conda create -n test_3.12.0 python=3.12.0 pip -y -c conda-forge --override-channels
Channels:
 - conda-forge
Platform: linux-64

(中略)

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_3.12.0
#
# To deactivate an active environment, use
#
#     $ conda deactivate
(base) [ku40000377@genkai0002 ~]$

# 作成した環境を有効化します
(base) [ku40000377@genkai0002 ~]$ conda activate test_3.12.0
# 行頭に有効化された環境名が表示され、インストールしたPythonやpipが使える状態になります
(test_3.12.0) [ku40000377@genkai0002 ~]$ which python
~/miniconda3/envs/test_3.12.0/bin/python
(test_3.12.0) [ku40000377@genkai0002 ~]$ python --version
Python 3.12.0
# インストール済みのモジュールを確認します
(test_3.12.0) [ku40000377@genkai0002 ~]$ pip list
Package    Version
---------- -------
pip        24.2
setuptools 72.1.0
wheel      0.44.0
# pandasモジュールをインストールします(仮想環境内にインストールされるため --user オプションは不要です)
(test_3.12.0) [ku40000377@genkai0002 ~]$ pip install pandas
Collecting pandas
  Downloading pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (19 kB)
Collecting numpy>=1.26.0 (from pandas)
  Downloading numpy-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
Collecting python-dateutil>=2.8.2 (from pandas)
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting pytz>=2020.1 (from pandas)
  Downloading pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas)
  Downloading tzdata-2024.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas)
  Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Downloading pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.7/12.7 MB 87.1 MB/s eta 0:00:00
Downloading numpy-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.0/16.0 MB 156.7 MB/s eta 0:00:00
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading pytz-2024.1-py2.py3-none-any.whl (505 kB)
Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: pytz, tzdata, six, numpy, python-dateutil, pandas
Successfully installed numpy-2.1.0 pandas-2.2.2 python-dateutil-2.9.0.post0 pytz-2024.1 six-1.16.0 tzdata-2024.1
# インストール済みのモジュールを確認するとpandasなどが増えています
(test_3.12.0) [ku40000377@genkai0002 ~]$ pip list
Package         Version
--------------- -----------
numpy           2.1.0
pandas          2.2.2
pip             24.2
python-dateutil 2.9.0.post0
pytz            2024.1
setuptools      72.1.0
six             1.16.0
tzdata          2024.1
wheel           0.44.0
# 有効化した環境を無効化します
(test_3.12.0) [ku40000377@genkai0002 ~]$ conda deactivate
# さらに無効化するとconda自体を無効化できます
(base) [ku40000377@genkai0002 ~]$ conda deactivate
[ku40000377@genkai0002 ~]$ which python
/usr/bin/python
[ku40000377@genkai0002 ~]$