🛠️

Python スクリプトを Windows 起動時に自動実行したい

に公開

動機

Python で書いたアプリを Windows 起動時に自動的に実行させたくなりますよね
しかし開発時に venv で仮想環境を作成した場合は実行が少々めんどくさい
そんな自分のために powershell でスクリプトを書きました

venv 環境に対応した powershell スクリプト

プロジェクトフォルダ名(例: foobar)と同名の python スクリプト名(例: foobar.py)になっていることが必要です

フォルダ構造例

foobar/
├── .venv/
├── README.md
├── foobar.py
└── requirements.txt
スクリプト
run.ps1
# -*- coding: utf-8 -*-

# 実行するディレクトリのパスを取得
$pwd = Split-Path -Path $MyInvocation.MyCommand.Path -Parent

# ディレクトリに移動
Set-Location -Path "$pwd"

# ディレクトリの basename を取得
$basename = Split-Path -Path $pwd -Leaf

# 実行対象のスクリプトは ${basename}.py
$script = "$pwd\$basename.py"

# venv 環境が存在するなら activate
$venv = ".venv\Scripts\Activate.ps1"
if (Test-Path -Path "$venv") {
   & "$venv"
}

# pythonw のフルパスを取得
$py = (Get-Command pythonw).Definition

# python スクリプトを実行
Invoke-Expression "$py $script"

この powershell スクリプト run.ps1 を python スクリプトのあるフォルダに配置して、そのショートカットをスタートアップフォルダに置くだけです。

foobar/
├── .venv/
├── README.md
├── foobar.py
├── requirements.txt
└── run.ps1

スタートアップフォルダ
スタートアップフォルダの例

ショートカットアイコン作成の豆知識
convert sample.png -define icon:auto-resize=256,128,64,32,16 sample.ico

最後に

非常に簡単に python スクリプトを Windows 起動時に実行できるようになりました

Enjoy!!

Discussion