コンテンツにスキップ

Python

概要

玄界には複数のバージョンの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 python3-flake8
python2.7-debug-config python3.6 python3.8d-config python3-pyflakes
python2-config python3.6-config python3.8d-x86_64-config python-debug
python2-debug python3.6m python3.8-x86_64-config python-debug-config
[ku40000105@genkai0002 ~]$ python

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

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

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

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

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

仮想環境の活用

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

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

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
(省略)
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 (省略)
[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 ~]$

Miniforgeの利用方法

MiniforgeはPythonを含むソフトウェアアプリケーションを管理するツール(パッケージ管理ソフト、環境管理システム)です。mambaコマンドで仮想環境の管理などを行います。同様のツールとしてはconda(Miniconda, Anaconda)などが存在します。 Miniforgeにはcondamambaというほぼ同様の機能を持つプログラムが含まれています。mambacondaの高速版のようなものであるため、特にこだわりがなければmambaの利用を推奨します。

Miniforgeのインストール

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

[ku40000105@genkai0001 ~]$ wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
[ku40000105@genkai0001 ~]$ bash ./Miniforge3-Linux-x86_64.sh -b -u -p ~/miniforge3
PREFIX=/home/pj24001603/ku40000105/miniforge3
Unpacking payload ...
Extracting _libgcc_mutex-0.1-conda_forge.tar.bz2
Extracting ca-certificates-2024.12.14-hbcca054_0.conda
Extracting ld_impl_linux-64-2.43-h712a8e2_2.conda
(省略)
Transaction starting
Transaction finished
To activate this environment, use:
micromamba activate /home/pj24001603/ku40000105/miniforge3
Or to execute a single command in this environment, use:
micromamba run -p /home/pj24001603/ku40000105/miniforge3 mycommand
installation finished.
[ku40000105@genkai0001 ~]$

インストール後、以下のコマンドを実行すると行頭に(base)と表示されます。

eval "$(~/miniforge3/bin/conda shell.bash hook)"

この状態で以下のコマンドを実行するとmambaコマンドが利用可能になります。

. ~/miniforge3/etc/profile.d/mamba.sh

また、mamba initコマンドを実行するとbashの設定ファイルが更新され、以降はログイン直後からmambaコマンドが利用可能になります。ただし、ログインにかかる時間が少し伸びることと、自動的にMiniforgeが起動することによる副作用が生じる可能性にはご注意ください。(実行するジョブによっては悪影響を及ぼす可能性があるかもしれません。)

Miniforgeの基本的な使い方

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

環境の作成は以下のコマンドで行います。

mamba create -n 環境名 同時にインストールしたいモジュール

createする際に、以下のように利用するPythonのバージョンを指定することもできます。

mamba create -n 環境名 python=バージョン番号

作成した環境の有効化は以下のコマンで行います。

mamba activate 有効化する環境の名前

有効化した環境の無効化は以下のコマンドで行います。

mamba deactivate

作成した環境の一覧表示は以下のコマンドで行います。

mamba info -e

Miniforgeの利用例

# mambaの利用準備が整った時点でminiforgeに含まれるPythonが利用可能な状態になっています
(base) [ku40000105@genkai0001 ~]$ which python
~/miniforge3/bin/python
(base) [ku40000105@genkai0001 ~]$ python --version
Python 3.12.8
# 初期状態では環境が作られていません
(base) [ku40000105@genkai0001 ~]$ manba info -e
mamba version : 1.5.12
# conda environments:
#
base * /home/pj24001603/ku40000105/miniforge3
# 環境を作成します(-yを付けなかった場合は内容が正しいかの確認が行われます)
(base) [ku40000105@genkai0001 ~]$ mamba create -n test_3.12.0 python=3.12.0 pip -y

Looking for: ['python=3.12.0', 'pip']

conda-forge/noarch 19.0MB @ 41.1MB/s 0.5s
conda-forge/linux-64 41.8MB @ 62.4MB/s 0.7s
Transaction

Prefix: /home/pj24001603/ku40000105/miniforge3/envs/test_3.12.0

Updating specs:

- python=3.12.0
- pip
(省略)
To activate this environment, use

$ mamba activate test_3.12.0

To deactivate an active environment, use

$ mamba deactivate

(base) [ku40000105@genkai0001 ~]$
# 作成した環境を有効化します
(base) [ku40000105@genkai0001 ~]$ mamba activate test_3.12.0
# 行頭に有効化された環境名が表示され、インストールしたPythonが使える状態になります
(test_3.12.0) [ku40000105@genkai0001 ~]$ which python
~/miniforge3/envs/test_3.12.0/bin/python
(test_3.12.0) [ku40000105@genkai0001 ~]$ python --version
Python 3.12.0
# インストール済みのモジュールを確認します
(test_3.12.0) [ku40000105@genkai0001 ~]$ pip list
Package Version
---------- -------
pip 25.0.1
setuptools 75.8.0
wheel 0.45.1
# 試しにpandasモジュールをインストールしてみます(仮想環境内にインストールされるため --user オプションは不要です)
(test_3.12.0) [ku40000105@genkai0001 ~]$ pip install pandas
Collecting pandas
Downloading pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (89 kB)
Collecting numpy>=1.26.0 (from pandas)
Downloading numpy-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 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-2025.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas)
Downloading tzdata-2025.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas)
Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Downloading pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.7/12.7 MB 96.2 MB/s eta 0:00:00
Downloading numpy-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.1/16.1 MB 114.3 MB/s eta 0:00:00
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading pytz-2025.1-py2.py3-none-any.whl (507 kB)
Downloading tzdata-2025.1-py2.py3-none-any.whl (346 kB)
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: pytz, tzdata, six, numpy, python-dateutil, pandas
Successfully installed numpy-2.2.2 pandas-2.2.3 python-dateutil-2.9.0.post0 pytz-2025.1 six-1.17.0 tzdata-2025.1
# インストール済みのモジュールを確認するとpandasなどが増えています
(test_3.12.0) [ku40000105@genkai0001 ~]$ pip list
Package Version
--------------- -----------
numpy 2.2.2
pandas 2.2.3
pip 25.0.1
python-dateutil 2.9.0.post0
pytz 2025.1
setuptools 75.8.0
six 1.17.0
tzdata 2025.1
wheel 0.45.1
# 有効化した環境を無効化します
(test_3.12.0) [ku40000105@genkai0001 ~]$ mamba deactivate
(base) [ku40000105@genkai0001 ~]$
# さらにdeactivateすると (base) の文字も消えます(この状態からmamba activateで環境を有効化することもできるようです)
(base) [ku40000105@genkai0001 ~]$ mamba deactivate
[ku40000105@genkai0001 ~]$

バッチジョブ内で利用する際の注意点

バッチジョブ内でmambaを使おうとすると、mamba initが済んでいないというエラーが発生することがあります。 この場合はバッチジョブスクリプトの先頭行に-lを追加してみてください。

[ku40000105@genkai0001 ~]$ cat test.sh.5686136.out
Run 'mamba init' to be able to run mamba activate/deactivate
and start a new shell session. Or use conda to activate/deactivate.

Python 3.6.8
#!/bin/bash -l
#PJM -L rscgrp=a-batch
#PJM -L vnode-core=4
#PJM -L elapse=10:00
#PJM -j

mamba activate testenv_py312
python --version
[ku40000105@genkai0001 ~]$ cat test.sh.5686131.out
Python 3.11.2

Jupyter Notebook上でPython仮想環境を使う方法

手順概要

  1. 仮想環境の用意
  2. ipythonコマンドを使って仮想環境をOODに登録
  3. OOD上で登録された仮想環境を起動

具体例

  1. 仮想環境の用意

OODで選択可能なPythonのバージョンにあわせて仮想環境を用意する。 (細かいバージョンまでは一致していなくても良い可能性はあるが、どの程度の差が許容されるかは未確認。) 仮想環境にはipykernelパッケージを導入しておくことが必要。 mamba create時にipykernelもまとめてインストールするのが楽だと思うが、あとからpipコマンドで追加しても良い。 以下はscipyとipykernelを含む仮想環境を新規作成する例。

[ku40000105@genkai0001 ~]$ mamba create -n test_3.12.11_scipy2 python=3.12.11 pip scipy ipykernel

Looking for: ['python=3.12.11', 'pip', 'scipy', 'ipykernel']
(中略)
Updating specs:
- python=3.12.11
- pip
- scipy
- ipykernel
(以下省略)
[ku40000105@genkai0001 ~]$ mamba info -e

mamba version : 1.5.12
# conda environments:
#
base                   /home/pj24001603/ku40000105/miniforge3
test_3.12.11_scipy2    /home/pj24001603/ku40000105/miniforge3/envs/test_3.12.11_scipy2
  1. ipythonコマンドを使って仮想環境をOODに登録

登録したい仮想環境を有効にした状態で、ipythonコマンドを使って仮想環境を登録する。 --name引数で指定した名前がJupyter上のカーネル一覧に表示される。

[ku40000105@genkai0001 ~]$ mamba activate test_3.12.11_scipy2
(test_3.12.11_scipy2) [ku40000105@genkai0001 ~]$ ipython kernel install --user --name=python_3.12.11_scipy2
Installed kernelspec python_3.12.11_scipy2 in /home/pj24001603/ku40000105/.local/share/jupyter/kernels/python_3.12.11_scipy2
(test_3.12.11_scipy2) [ku40000105@genkai0001 ~]$ jupyter kernelspec list
Available kernels:
python3                  /home/pj24001603/ku40000105/miniforge3/envs/test_3.12.11_scipy2/share/jupyter/kernels/python3
jupyter_py3.11           /home/pj24001603/ku40000105/.local/share/jupyter/kernels/jupyter_py3.11
python_3.12.11_scipy2    /home/pj24001603/ku40000105/.local/share/jupyter/kernels/python_3.12.11_scipy2

登録した仮想環境の削除はjupyterコマンドで行う。

(test_3.12.11_scipy2) [ku40000105@genkai0001 ~]$ jupyter kernelspec uninstall jupyter_py3.11
Kernel specs to remove:
jupyter_py3.11        /home/pj24001603/ku40000105/.local/share/jupyter/kernels/jupyter_py3.11
Remove 1 kernel specs [y/N]: y
Removed /home/pj24001603/ku40000105/.local/share/jupyter/kernels/jupyter_py3.11
(test_3.12.11_scipy2) [ku40000105@genkai0001 ~]$ jupyter kernelspec list
Available kernels:
python3                  /home/pj24001603/ku40000105/miniforge3/envs/test_3.12.11_scipy2/share/jupyter/kernels/python3
python_3.12.11_scipy2    /home/pj24001603/ku40000105/.local/share/jupyter/kernels/python_3.12.11_scipy2
  1. OOD上で登録された仮想環境を起動

登録した環境に合わせたPythonバージョンを指定してOODを起動する。 起動後、Notebook起動メニューから登録した仮想環境を選べるようになっているため、選択して起動する。

カーネル選択例1

カーネル選択例2

scipyをインストールしてあるためscipyに関する処理が行えていることが確認できるとともに、 pandasをインストールしていないためモジュールのロードができないことが確認できる。

実行例

なお最初から利用可能な環境(Python 3 (ipykernel))にはscipyもpandasもインストールしていないため、どちらもモジュールのロードができずにエラーが発生する。これにより上記の例では確かに作成した仮想環境が使えていたことが確認できる。

エラー例

uv の利用方法

uvもPython仮想環境の高速な切替などに有用なツールです。 conda/mambaと比べて、 .bashrcファイルを汚さない利用や、ローカルディレクトリへの環境設定ファイル配置を行いやすいです。

uv の導入方法

curl -LsSf https://astral.sh/uv/install.sh | sh を実行すると $HOME/.local/bin/uv$HOME/.local/bin/uvx がインストールされます。 ($HOME/.lcaol/binには玄界利用開始の時点でPATHが通っているはずです。)

  • インストール例
[ku40000105@genkai0001 ~]$ ls ~/.local/bin|grep uv
[ku40000105@genkai0001 ~]$ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.11.7 x86_64-unknown-linux-gnu
installing to /home/pj24001603/ku40000105/.local/bin
  uv
  uvx
everything's installed!
[ku40000105@genkai0001 ~]$ ls ~/.local/bin|grep uv
uv*
uvx*
[ku40000105@genkai0001 ~]$ uv --version
uv 0.11.7 (x86_64-unknown-linux-gnu)

uv の利用方法(Python環境を切り替えて利用する)

uv venv を実行すると、カレントディレクトリに.venvディレクトリが作成され、新しいPython仮想環境が作成されます。 この際に uv venv --python 3.11 のようにPythonのバージョンを指定すれば、指定したバージョンに対応した仮想環境を作成できます。

source .venv/bin/activate を実行すると仮想環境を有効化できます。 この状態でpythonを実行すれば、指定したバージョンのPythonコマンドを実行できます。 他に影響を及ぼすことなくPythonパッケージを導入できます。

deactiaveコマンドで仮想環境を無効化、 不要になった仮想環境はディレクトリごと削除すれば良いだけです。

[ku40000105@genkai0001 ~]$ uv --version
uv 0.11.7 (x86_64-unknown-linux-gnu)
[ku40000105@genkai0001 ~]$ which python
/usr/bin/python
[ku40000105@genkai0001 ~]$ python --version
Python 3.6.8
[ku40000105@genkai0001 ~]$ mkdir uv3.11
[ku40000105@genkai0001 ~]$ cd uv3.11
[ku40000105@genkai0001 uv3.11]$ uv venv --python 3.11                                                                                                                Using CPython 3.11.13 interpreter at: /usr/bin/python3.11                                                                                                            Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
[ku40000105@genkai0001 uv3.11]$ source .venv/bin/activate
(uv3.11) [ku40000105@genkai0001 uv3.11]$ python --version 3.11
Python 3.11.13
(uv3.11) [ku40000105@genkai0001 uv3.11]$ deactivate
[ku40000105@genkai0001 uv3.11]$
[ku40000105@genkai0001 uv3.11]$ python --version
Python 3.6.8

仮想環境内にパッケージをインストールする際はpipの代わりにuv pipを使います。 (仮想環境内にpipはインストールされていません。)

# pipコマンドを直接実行しようとすると仮想環境の外のpip(標準のpip)が使われてしまう
# ここでpip listを実行すると標準のpythonのパッケージ一覧が表示されてしまう
(uv3.11) [ku40000105@genkai0001 uv3.11]$ which pip
~/.local/bin/pip
# uv pip listを実行すると現在の仮想環境にはまだ何もパッケージがないことが確認できる
(uv3.11) [ku40000105@genkai0001 uv3.11]$ uv pip list
# uv pip installでパッケージをインストールできる
(uv3.11) [ku40000105@genkai0001 uv3.11]$ uv pip install pandas
Resolved 4 packages in 1.60s
Prepared 4 packages in 1.83s
Installed 4 packages in 1.27s
 + numpy==2.4.4
 + pandas==3.0.2
 + python-dateutil==2.9.0.post0
 + six==1.17.0
(uv3.11) [ku40000105@genkai0001 uv3.11]$ uv pip list
Package         Version
--------------- -----------
numpy           2.4.4
pandas          3.0.2
python-dateutil 2.9.0.post0
six             1.17.0
(uv3.11) [ku40000105@genkai0001 uv3.11]$

uv runコマンドを利用すれば、activateしていないPython環境を実行することもできます。

(uv3.11) [ku40000105@genkai0001 uv3.11]$ deactivate
[ku40000105@genkai0001 uv3.11]$ uv run python --version
Python 3.11.13
[ku40000105@genkai0001 uv3.11]$

もちろんバッチジョブ実行時にも使えます。

[ku40000105@genkai0001 uv3.11]$ cat test1.sh
#!/bin/bash -l
#PJM -L rscgrp=a-batch
#PJM -L vnode-core=4
#PJM -L elapse=10:00
#PJM -j

source .venv/bin/activate
python --version

[ku40000105@genkai0001 uv3.11]$ cat test1.sh.5686167.out
Python 3.11.2
[ku40000105@genkai0001 uv3.11]$ cat test2.sh
#!/bin/bash
#PJM -L rscgrp=a-batch
#PJM -L vnode-core=4
#PJM -L elapse=10:00
#PJM -j

uv run python --version

[ku40000105@genkai0001 uv3.11]$ cat test2.sh.5686165.out
Python 3.11.2

Jupyter Notebook上でPython仮想環境を使う方法

ipykernelを使えば、作成した仮想環境をJupyter Notebook上でも利用できます。 手順(例)を以下に示します。

# 仮想環境を用意し有効化します
[ku40000105@genkai0001 python3.12]$ uv venv --python 3.12
Using CPython 3.12.11
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
[ku40000105@genkai0001 python3.12]$ source .venv/bin/activate
# ipykernelをインストールします
(python3.12) [ku40000105@genkai0001 python3.12]$ uv pip install ipykernel
Resolved 29 packages in 1.08s
Prepared 4 packages in 275ms
Installed 29 packages in 2.47s
 + asttokens==3.0.1
 + comm==0.2.3
 + debugpy==1.8.20
 + decorator==5.2.1
 + executing==2.2.1
 + ipykernel==7.2.0
 + ipython==9.13.0
 + ipython-pygments-lexers==1.1.1
 + jedi==0.19.2
 + jupyter-client==8.8.0
 + jupyter-core==5.9.1
 + matplotlib-inline==0.2.1
 + nest-asyncio==1.6.0
 + packaging==26.2
 + parso==0.8.6
 + pexpect==4.9.0
 + platformdirs==4.9.6
 + prompt-toolkit==3.0.52
 + psutil==7.2.2
 + ptyprocess==0.7.0
 + pure-eval==0.2.3
 + pygments==2.20.0
 + python-dateutil==2.9.0.post0
 + pyzmq==27.1.0
 + six==1.17.0
 + stack-data==0.6.3
 + tornado==6.5.5
 + traitlets==5.14.3
 + wcwidth==0.6.0
# ipykernelで仮想環境を登録します。nameに指定した名前は管理用の名前、display-nameに指定した名前がJupyter Notebook上に表示されます。
(python3.12) [ku40000105@genkai0001 python3.12]$ python -m ipykernel install --user --name=uv3.12 --display-name="Python uv3.12"
Installed kernelspec uv3.12 in /home/pj24001603/ku40000105/.local/share/jupyter/kernels/uv3.12
# 一覧を見るとnameに指定した名前が確認できます
(python3.12) [ku40000105@genkai0001 python3.12]$ jupyter kernelspec list
Available kernels:
  python3                  /home/pj24001603/ku40000105/work/tmp/python3.12/.venv/share/jupyter/kernels/python3
  uv3.12                   /home/pj24001603/ku40000105/.local/share/jupyter/kernels/uv3.12

この状態でJupyter Notebookを開けば、カーネル一覧に"Python uv3.12"が表示されているはずです。

# uninstallで削除できます
(python3.12) [ku40000105@genkai0001 python3.12]$ jupyter kernelspec uninstall uv3.12
Kernel specs to remove:
  uv3.12                /home/pj24001603/ku40000105/.local/share/jupyter/kernels/uv3.12
Remove 1 kernel specs [y/N]: y
Removed /home/pj24001603/ku40000105/.local/share/jupyter/kernels/uv3.12
# 登録した仮想環境が削除されたことが確認できます
(python3.12) [ku40000105@genkai0001 python3.12]$ jupyter kernelspec list
Available kernels:
  python3                  /home/pj24001603/ku40000105/work/tmp/python3.12/.venv/share/jupyter/kernels/python3
(python3.12) [ku40000105@genkai0001 python3.12]$