🕌

Pythonプロジェクトの環境構築を自動化する:venv環境の自動構築シェル関数の紹介

2025/02/06に公開

はじめに

Pythonプロジェクトを開始する際、最初のステップとして仮想環境(venv)の構築が必要となります。
python -m venv .venvを手動で実行する作業を自動化するため、.pyファイル作成時に自動的にvenv環境を構築するシェル関数を紹介します。

主な機能

本シェル関数は以下の機能を提供します:

  1. .pyファイル作成時のvenv環境の自動検出
  2. 未構築の場合の仮想環境の自動作成
  3. pipパッケージの最新化
  4. .gitignoreファイルの自動生成/更新
  5. requirements.txtの初期作成

実装コード

以下のコードを.bashrcまたは.zshrcに追加してください:

function touch() {
    # カラーコードの定義
    local GREEN='\033[0;32m'
    local YELLOW='\033[0;33m'
    local BLUE='\033[0;34m'
    local RED='\033[0;31m'
    local NC='\033[0m'

    # 引数をループで処理
    for file in "$@"; do
        # 通常のtouchコマンドを実行
        command touch "$file"
        
        # .pyファイルかチェック
        if [[ "$file" == *.py ]]; then
            echo -e "${BLUE}Python file detected: $file${NC}"
            
            # 現在のディレクトリとその親ディレクトリでvenv/を探索
            local venv_found=false
            local current_dir="$PWD"
            while [[ "$current_dir" != "/" ]]; do
                if [[ -d "$current_dir/venv" || -d "$current_dir/.venv" ]]; then
                    venv_found=true
                    break
                fi
                current_dir=$(dirname "$current_dir")
            done
            
            # venvが見つからない場合、新規作成
            if ! $venv_found; then
                echo -e "${YELLOW}No virtual environment found. Creating new venv...${NC}"
                
                # Pythonのバージョンを確認
                if command -v python3 >/dev/null 2>&1; then
                    python3 -m venv .venv
                    
                    # venvをアクティベート
                    source .venv/bin/activate
                    
                    # pipのアップグレード
                    echo -e "${BLUE}Upgrading pip...${NC}"
                    pip install --upgrade pip
                    
                    # requirements.txtを作成
                    pip freeze > requirements.txt
                    
                    echo -e "${GREEN}Virtual environment created and activated${NC}"
                    
                    # .gitignoreの作成または更新
                    if [[ ! -f .gitignore ]]; then
                        echo -e "venv/\n.venv/\n__pycache__/\n*.pyc" > .gitignore
                        echo -e "${BLUE}Created .gitignore file${NC}"
                    else
                        # .gitignoreに既存の項目がなければ追加
                        for item in "venv/" ".venv/" "__pycache__/" "*.pyc"; do
                            if ! grep -q "^$item" .gitignore; then
                                echo "$item" >> .gitignore
                            fi
                        done
                        echo -e "${BLUE}Updated .gitignore file${NC}"
                    fi
                else
                    echo -e "${RED}Python 3 is not installed${NC}"
                fi
            fi
        fi
    done
}

使用方法

  1. 上記のコードを設定ファイルに追加します
  2. シェルを再起動するか、設定ファイルを再読み込みします
  3. touchコマンドで.pyファイルを作成します

実行例:

$ touch main.py
Python file detected: main.py
No virtual environment found. Creating new venv...
Upgrading pip...
Virtual environment created and activated
Created .gitignore file

動作仕様

以下の手順で処理が実行されます:

  1. .pyファイル作成時にvenv環境の存在確認を行います
  2. venv環境が存在しない場合:
    • .venvディレクトリを作成します
    • 仮想環境を有効化します
    • pipを最新版にアップデートします
    • 初期状態のrequirements.txtを作成します
    • .gitignoreファイルを作成または更新します

カスタマイズ方法

以下のようなカスタマイズが可能です:

  • venvディレクトリ名の変更
  • 追加パッケージの自動インストール設定
  • .gitignoreの設定項目の調整
  • プロジェクトテンプレートの追加

注意事項

  • 既存のtouchコマンドを上書きするため、必要に応じて関数名の変更をご検討ください
  • Python3のインストールが前提となります
  • シェルスクリプトはbash/zsh環境での動作を想定しています

まとめ

本シェル関数を導入することで、Pythonプロジェクトの初期設定を自動化し、開発効率を向上させることができます。
特に小規模スクリプト開発において、環境構築の工数を削減することが可能です。

その他の記事紹介

これ以外にも以下のようなPythonの開発に役立つシェルスクリプトを紹介しています。

Discussion