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
コマンドで利用終了します。
利用例
[ku40000105@genkai0001 ~]$ python3.6 -mvenv venv/test1
[ku40000105@genkai0001 ~]$ source venv/test1/bin/activate
(test1) [ku40000105@genkai0001 ~]$
(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)
(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) [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のバージョン一覧が取得できます。
[ku40000105@genkai0002 ~]$ pyenv versions
* system (set by /home/pj24001603/ku40000105/.pyenv/version)
[ku40000105@genkai0002 ~]$
|
[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/version
、local
の場合は.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
[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)
[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)
[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とはお好みで使い分けてください。)
[ku40000105@genkai0002 ~]$ pyenv virtualenv 3.12.0 test_3.12.0
[ku40000105@genkai0001 ~]$ pyenv activate test_3.12.0
(test_3.12.0) [ku40000105@genkai0001 ~]$
(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の利用例
(base) [ku40000377@genkai0002 ~]$ which python
~/miniconda3/bin/python
(base) [ku40000377@genkai0002 ~]$ python --version
Python 3.12.4
(base) [ku40000377@genkai0002 ~]$
(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 ~]$
(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
(base) [ku40000377@genkai0002 ~]$
(base) [ku40000377@genkai0002 ~]$ conda activate test_3.12.0
(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
(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
(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
(base) [ku40000377@genkai0002 ~]$ conda deactivate
[ku40000377@genkai0002 ~]$ which python
/usr/bin/python
[ku40000377@genkai0002 ~]$
|