VSCodeで開発している間はVSCodeから開発中のPythonスクリプトを実行しているが、最終的にはWindowsターミナルでコマンドとしてPythonスクリプトを実行する必要がある。開発中にも同じことをする必要が出てくるので、今回は生成AIにPythonスクリプトをWindowsにおいてコマンドとして実行するための方法を質問し、作業および動作確認を行う方法を取り上げる。

連載「生成AI×プログラミング」のこれまでの回はこちらを参照

これまでの成果物

これまでの成果物をまとめておくと次のようになる。

ファイル名 内容
todo_app.py CUIの処理を行うファイル。ユーザーが直接操作する。
todo_db_manager.py SQLiteデータベースとのやり取りを担当するファイル。

todo_app.py

import datetime
from todo_db_manager import create_todo_table, add_todo, get_todos

def main():
    # テーブルの作成
    create_todo_table()

    # Todoの追加
    add_todo("買い物", "牛乳を買う", priority=1)
    add_todo("プロジェクトの提出", "プレゼンテーション資料を完成させる", due_date=datetime.datetime(2024, 6, 10), priority=2)

    # すべてのTodoを取得して表示
    todos = get_todos()
    for todo in todos:
        print(todo)

if __name__ == "__main__":
    main()

todo_db_manager.py

import sqlite3
from datetime import datetime

DB_FILE = "todos.db"

def create_todo_table():
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS todos (
            id INTEGER PRIMARY KEY,
            title TEXT,
            description TEXT,
            due_date DATE,
            priority INTEGER,
            completed INTEGER
        )
    ''')
    conn.commit()
    conn.close()

def add_todo(title, description=None, due_date=None, priority=3):
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute('''
        INSERT INTO todos (title, description, due_date, priority, completed)
        VALUES (?, ?, ?, ?, ?)
    ''', (title, description, due_date, priority, 0))
    conn.commit()
    conn.close()

def get_todos():
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute('''
        SELECT * FROM todos
    ''')
    todos = cursor.fetchall()
    conn.close()
    return todos
列名 内容
id INTEGER (主キー) Todoアイテムの一意識別子。
title TEXT Todoアイテムのタイトル。
description TEXT Todoアイテムの詳細な説明。
due_date DATE Todoアイテムの期日。
priority INTEGER Todoアイテムの優先度。1が最も高い優先度で、3が最も低い優先度。
completed INTEGER Todoアイテムが完了したかどうかを示すフラグ。0は未完了、1は完了。

これまではVSCodeの実行機能を使ってtodo_app.pyを実行してきたが、最終的にはPowerShellやコマンドプロンプトから実行したいので、単体のコマンドとして実行できるようにする必要がある。

今回はこうした部分の設定方法や実装方法をChatGPTに聞いていく。

開発中のPythonスクリプトをWindowsで実行する方法を質問

実現したいことをそのままChatGPTに聞いてみる。

次のPythonスクリプトを「todo\_app.py」として作成しています。このPythonスクリプトをWindowsのコマンドプロンプトやPowerShellターミナルで簡単に実行する方法を教えてください。

todo_app.py

import datetime
from todo_db_manager import create_todo_table, add_todo, get_todos

def main():
    # テーブルの作成
    create_todo_table()

    # Todoの追加
    add_todo("買い物", "牛乳を買う", priority=1)
    add_todo("プロジェクトの提出", "プレゼンテーション資料を完成させる", due_date=datetime.datetime(2024, 6, 10), priority=2)

    # すべてのTodoを取得して表示
    todos = get_todos()
    for todo in todos:
        print(todo)

if __name__ == "__main__":
    main()

ChatGPTは次のような回答をした。

  • ChatGPTにPythonスクリプトをWindowsで実行する方法を質問

    ChatGPTにPythonスクリプトをWindowsで実行する方法を質問

WindowsのコマンドプロンプトやPowerShellでPythonスクリプトを実行する方法を説明します。
1.Pythonのインストール確認: まず、コマンドプロンプトやPowerShellでpython --versionを実行して、Pythonがインストールされていることを確認してください。インストールされていない場合は、Pythonの公式サイトからインストーラーをダウンロードしてインストールしてください
2. スクリプトの配置: todo\_app.pyという名前でPythonスクリプトを作成し、任意のディレクトリーに保存します
3. 必要なライブラリーのインストール: スクリプトが依存しているtodo\_db\_managerなどのライブラリーがあれば、事前にインストールしてください。例えば、todo\_db\_managerがpipでインストール可能であれば、以下のようにインストールします。「pip install todo\_db\_manager」
4. スクリプトの実行: コマンドプロンプトまたはPowerShellを開き、todo\_app.pyが保存されているディレクトリーに移動します。次に、以下のコマンドを入力してスクリプトを実行します。「python todo\_app.py」
これにより、Pythonが起動し、todo\_app.pyの中のmain()関数が実行されます。スクリプト内で定義されているデータベースの操作や出力が、コマンドプロンプトやPowerShell上で表示されます。

注意点:

・Pythonの実行ファイル (python) が環境変数PATHに通っている必要があります。インストール時に「パスを通す」オプションを選択していれば、通常は問題ありません
・todo\_db\_managerが外部のライブラリーであり、その使い方についてはそのライブラリーのドキュメントを参照してください