Python-Redmineを使ってRedmineを操作する

 •  分類:  •  黒谷明大

Python-Redmineを使ってRedmineを操作するOGP画像

この記事では、PythonからRedmineのREST APIを利用できるライブラリ「Python-Redmine」を使ってRedmineに接続し、プロジェクトやチケットを操作する方法を紹介します。

Python-Redmineを使うと、APIリクエストの詳細を意識せずに、PythonのオブジェクトとしてRedmineのプロジェクトやチケットなどを扱えます。

Redmineとは:
Redmineはオープンソースのプロジェクト管理ソフトウェアです。オンプレミスのサーバなど自分で用意した環境に自由にインストールできるほか、 クラウドサービス の利用も可能です。Redmineについて詳しくは Redmine.JP をご覧ください。

Python-Redmineについて

Python-Redmineは、PythonからRedmine REST APIを操作するためのライブラリです。RedmineのURLとAPIキーを指定して接続すると、プロジェクトやチケットの検索・取得などのRedmineの操作をPythonコードで実行できます。

Python-RedmineのGitHubリポジトリ

本記事では、Pythonの仮想環境を作成してライブラリをインストールし、対話型シェルを使ってRedmineを操作します。

事前準備

  • Python 3が利用できること(python3 --version で確認できます)
  • REST API が利用可能なRedmine

Python-Redmineをインストール

作業用ディレクトリを作成します。この記事ではホームディレクトリに python-redmine というディレクトリを作成します。

mkdir ~/python-redmine
cd ~/python-redmine

Pythonの仮想環境を作成し、有効にします。

python3 -m venv .venv
source .venv/bin/activate

仮想環境を有効にすると、ターミナルのプロンプトに .venv などが表示されます。以降のコマンドは、仮想環境を有効にした状態で実行してください。

pipを使ってPython-Redmineをインストールします。

python3 -m pip install python-redmine

Pythonの対話型シェルを起動

仮想環境を有効にした状態で、Pythonの対話型シェルを起動します。

python3

>>> というプロンプトが表示されます。これより以下の手順はこのプロンプトが表示されている状態で実行してください。

Python-Redmine ライブラリをロードする

Python-Redmine ライブラリをロードします。

from redminelib import Redmine

Redmineに接続する

APIキーを使ってRedmineに接続します。APIキーの利用については REST API — Redmine用語解説 をご覧ください。 接続先のRedmineのURLとAPIキーを指定します。以下の https://redmine.example.com/YOUR_API_KEY を実際に利用する値に置き換えてください。

redmine = Redmine( "https://redmine.example.com/", key="YOUR_API_KEY" )

プロジェクト一覧を出力する

project.all()でプロジェクト一覧を取得できます。以下の実行例は、プロジェクト名と識別子の一覧を出力します。

projects = redmine.project.all()
for project in projects:
    print(project.name, project.identifier)
(出力例)
コーポレートサイト構築 corporate-site
PyCon JP 2026 ブース出展 pyconjp2026

プロジェクトを作成する

プロジェクトを新規作成するときは以下のように実行します。最低限必要な項目は name (名称) identifier (識別子)です。

project = redmine.project.create(
    name='Python-Redmineの記事を書く',
    identifier='article-python-redmine',
    description='Python-Redmineを紹介するブログ記事を作成する',
    is_public=False
)

プロジェクトにメンバーを登録する

プロジェクトにメンバーを登録するときは、登録するユーザーのidと、そのユーザーに付与するロールのidを指定します。

ユーザー一覧を出力する

Redmineに登録されているアクティブなユーザーの一覧は以下のように実行すると出力できます。

users = redmine.user.filter(status=1)
for user in users:
    print(user.id, user.login, user.firstname, user.lastname, user.mail)
(出力例)
34 akada 舞 赤田 akada@example.com
35 sato 大輔 佐藤 sato@example.com
36 kameda 三郎 亀田 kameda@example.com

ロールの一覧を出力する

ロールの一覧は以下のように実行すると出力できます。

roles = redmine.role.all()
for role in roles:
    print(role.id, role.name)
(出力例)
3 Manager
4 Developer
5 Reporter

メンバー登録する

ユーザー「赤田舞」(id: 34)をロール「Manager」(id: 3)でプロジェクト「Python-Redmineの記事を書く」(識別子: article-python-redmine)にメンバー登録します。

membership = redmine.project_membership.create(
    project_id='article-python-redmine',
    user_id=34,
    role_ids=[3]
)

メンバー一覧を出力する

プロジェクトに登録済みのメンバーの一覧は以下のように実行すると出力できます。

memberships = redmine.project_membership.filter(
    project_id='article-python-redmine'
)
for membership in memberships:
    print(membership.user)
(出力例)
舞 赤田

メンバー登録されたプロジェクトの概要画面

チケット作成

チケットを作成するには以下のように実行します。最低限必要な項目は project_id (プロジェクト識別子)と subject (チケット題名)です。

issue = redmine.issue.create(
    project_id='article-python-redmine',
    subject='Python-Redmineライブラリの動作検証',
    description='Python-Redmineライブラリを実際に動かしてみる',
    assigned_to_id=34
)

作成されたチケットの詳細画面

プロジェクトに登録されているチケット一覧を出力する

プロジェクトに登録されているチケット一覧を出力するときは、以下のようにプロジェクト識別子を指定して実行します。

issues = redmine.issue.filter(project_id="article-python-redmine")
for issue in issues:
    print(issue.id, issue.subject)

チケットの内容をJSON形式で出力する

issue.get()にチケット番号を指定すると、特定のチケットの情報を取得できます。raw()を呼び出すと、取得した内容をJSON形式の文字列として出力できます。

issue = redmine.issue.get(185)
print(issue.raw())
(出力例)
{'relations': None, 'time_entries': None, 'children': None, 'attachments': None, 'changesets': None, 'journals': None, 'watchers': None, 'allowed_statuses': None, 'id': 185, 'project': {'id': 40, 'name': 'Python-Redmineの記事を書く'}, 'tracker': {'id': 1, 'name': 'Bug'}, 'status': {'id': 1, 'name': 'New', 'is_closed': False}, 'priority': {'id': 2, 'name': 'Normal'}, 'author': {'id': 5, 'name': 'Akihiro Kurotani'}, 'assigned_to': {'id': 34, 'name': '舞 赤田'}, 'subject': 'Python-Redmineライブラリの動作検証', 'description': 'Python-Redmineライブラリを実際に動かしてみる', 'start_date': '2026-08-19', 'due_date': None, 'done_ratio': 0, 'is_private': False, 'estimated_hours': None, 'total_estimated_hours': None, 'spent_hours': 0.0, 'total_spent_hours': 0.0, 'created_on': '2026-08-19T02:02:41Z', 'updated_on': '2026-08-19T02:02:41Z', 'closed_on': None}

対話型シェルを終了する

exit() を実行するか Ctrl-D を入力すると対話型シェルが終了します。

再度起動する

ターミナルを終了したあと、再度対話型シェルを起動するときは、仮想環境を有効にしてから起動してください。

cd ~/python-redmine
source .venv/bin/activate
python3

まとめ

Python-Redmineを使うと、PythonからRedmineへ簡単に接続できます。この記事で対話型シェルを使って操作する例を説明しましたが、生成AIを使ってスクリプトを生成することで、チケットの作成や更新を自動化もできそうです。みなさんぜひ一度お試しください。

作成: 2026-08-19 17:00  •  分類: