【Python】PythonスクリプトをWindowsタスクバーから直接起動する話


## はじめに

Pythonで便利なスクリプトを作ったはいいけど、毎回コマンドプロンプトを開いて `python script.py` って打つの、地味に面倒くさいですよね？

**pyinstaller**などで「exe化すればいいな」と思いきや、アンチウイルスソフトにマルウェアと間違えられてヒヤッとした経験、ありませんか？（私はあります😇）

今回は、Pythonスクリプトを **exe化せずに** Windowsのタスクバーから一発で起動する方法を紹介します。

### この記事でわかる・できること

- Pythonスクリプトを**exe化せず**にタスクバーから簡単に起動できるようになります
- 仮想環境 (venv) を使っているスクリプトも、迷わずタスクバーから起動できます
- GUIアプリなど、コンソールウィンドウを非表示にして起動する方法がわかります

### この記事の対象者

- Pythonスクリプトを日常的に使っていて、もっと手軽に起動したい方
- スクリプトのexe化でマルウェア誤検知に遭遇した、または避けたい方
- 別にスクリプトを誰かに配るつもりもない人
- venv（仮想環境）でPythonスクリプトを開発・実行している方
- TkinterやPyQtなどで作ったGUIアプリを、起動時の黒い画面（コンソール）なしでスマートに実行したい方

### 動作環境・使用するツールや言語

- Windows 10 / Windows 11 (他のバージョンでも同様に可能と思われます)
- Python (バージョンは問いませんが、venvのパス構造が若干異なる場合があります)

## なぜexe化を避けたいのか？

Pythonスクリプトを単一の実行ファイル(.exe)に変換するツール（PyInstallerなど）は非常に便利ですが、いくつかデメリットがあります。

-   **マルウェア誤検知のリスク**: 作成したexeファイルが、残念ながらアンチウイルスソフトにマルウェアとして誤検知されることがあります。信頼できるソフトでも起こりうるので、びっくりする。
-   **ビルドの手間**: スクリプトを少し修正するたびに、再度exe化のビルドプロセスが必要になります。
-   **ファイルサイズ**: 単純なスクリプトでも、Pythonインタプリタやライブラリを含むため、exeファイルが比較的大きくなりがちです。

そこで今回は、スクリプトファイルのままやります。

## 解決策：ショートカットファイルを作る

Windowsのショートカットファイルをいじるといい感じにいけます。

基本的な流れはこんな感じ。

1.  Python実行ファイル（`python.exe` や `pythonw.exe`）が、目的のスクリプトファイル（`.py`）を実行するように指示するショートカットを作成。
2.  必要に応じて、スクリプトが正しく動くための「作業フォルダー」を設定。
3.  作成したショートカットをタスクバーにピン留め

では、具体的な手順をステップ・バイ・ステップで解説していきます。

### 手順1：Pythonスクリプトのショートカットを作成

まずは、スクリプトを起動するためのショートカットを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/0237eb23-63cd-4fe9-af4b-9b2fa5725cc7.png)

1.  **ショートカットの作成場所へGO！**
    デスクトップなど、分かりやすい場所で右クリックし、「新規作成」→「ショートカット」を選択します。もしくはpyスクリプトを右ドラッグしてショートカットを作成。


2.  **項目の場所を入力**
    ここに、Pythonにスクリプトを実行させるためのコマンドを入力します。

    基本形はこれ。
    ```
    python.exe "C:\path\to\your\script.py"
    ```
    *   `python.exe`:
        Pythonをインストールした際に環境変数PATHを設定していれば、これだけでOKです。もし「そんなコマンドないよ！」と怒られたら、`python.exe` のフルパス（例: `C:\Users\YourName\AppData\Local\Programs\Python\Python311\python.exe`）を指定してください。
        `py.exe` ランチャー (`C:\Windows\py.exe`) を使うのも便利です。
    *   `"C:\path\to\your\script.py"`:
        実行したいPythonスクリプトのフルパスをダブルクォーテーション `"` で囲んで指定します。**パスに空白が含まれる場合は、ダブルクォーテーションが必須です！**
:::note warn
venv(仮想環境)で作った場合は実行ファイルを仮想環境のPython.exeにする必要があります。
```
"C:\path\to\your\project\venv\Scripts\python.exe" "C:\path\to\your\project\script.py"
```
:::


    入力したら「次へ」をクリック。

3.  **ショートカットに命名**
    分かりやすい名前を付けてあげましょう（例: 「マイ便利ツール」）。入力したら「完了」！


4.  **(任意) アイコンを着せ替え**
    デフォルトだとPythonのアイコンですが、変えたい場合は、作成したショートカットを右クリック → 「プロパティ」 → 「ショートカット」タブ → 「アイコンの変更」でお好きなアイコンにチェンジ！

### 手順2：作業フォルダーの設定
スクリプトが設定ファイルやデータファイルを相対パス（例: `./data/input.csv`）で読み書きする場合、スクリプトがどこで実行されているか（＝作業フォルダー）が正しくないと、「ファイルが見つかりません！」エラーで泣きを見ることになります。

1.  作成したショートカットを右クリックし、「プロパティ」を選択。
2.  「ショートカット」タブにある「**作業フォルダー**」の欄に、スクリプトが存在するフォルダーのパス、またはスクリプトが基準としたいフォルダーのパスを入力します。
    例えば、スクリプトが `C:\MyScripts\Tool\my_tool.py` で、データファイルが `C:\MyScripts\Tool\data\` にあるなら、「作業フォルダー」は `C:\MyScripts\Tool\` とします。

こうなってたらかんりょ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/c9f98865-6809-420f-b067-3ef8c9f9ae37.png)


### 手順3：タスクバーにピン留め

作成したショートカットを、タスクバーにドラッグ＆ドロップすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/7f470543-159d-4a73-ba6b-81f4e445a5fd.png)


置かれました。後はタスクバーのアイコンをクリックするだけで、いつでもPythonスクリプトが起動します！


## 【応用】GUIアプリのコンソール消す (`pythonw.exe` )

TkinterやPyQtなどでGUIアプリケーションを作った場合、起動時に一瞬黒いコンソールウィンドウが表示されるのが気になる。
そんな時は、`python.exe` の代わりに `pythonw.exe` を使います。

`pythonw.exe` は、コンソールウィンドウなしでPythonスクリプトを実行するためのものです。（`w` は windowless の `w` です。多分）

ショートカットの「項目の場所」を以下のように変更します。

```
pythonw.exe "C:\path\to\your\gui_script.py"
```
または、venv環境と組み合わせるなら、
```
"C:\path\to\your\project\venv\Scripts\pythonw.exe" "C:\path\to\your\project\gui_script.py"
```

-   `pythonw.exe` も `python.exe` と同じ場所にあります。PATHが通っていれば `pythonw.exe` だけでOK。
-   `py.exe` ランチャーを使っている場合は `pyw.exe` が対応します。

**注意点：**
`pythonw.exe` を使うと、`print()` による出力やエラーメッセージがコンソールに表示されなくなります。デバッグ時には `python.exe` を使い、完成したら `pythonw.exe` に切り替えるのがおすすめです。
どうしてもログを見たい場合は、ファイルに書き出すなどの工夫が必要になります。

## (補足) その他の方法

今回はショートカットを使った一番お手軽な方法を紹介しましたが、他にもこんな方法があります。

-   **バッチファイル (.bat) 経由:**
    簡単なコマンドを記述したバッチファイルを作成し、そのバッチファイルのショートカットをピン留めする方法。コンソールが一瞬表示されることがあります。
-   **VBScript (.vbs) 経由:**
    VBScriptを使ってPythonスクリプトを呼び出す方法。コンソールを完全に非表示にしやすいですが、少し記述が複雑になります。

これらは特定の状況で役立つことがありますが、まずは本記事で紹介したショートカットの方法をマスターするのがおすすめです！


## まとめ

これで、Pythonスクリプトをexe化する手間やマルウェア誤検知のリスクを気にすることなく、タスクバーからサッと起動できるようになったので満足しています。

特に、
-   **作業フォルダーの設定**
-   **venv環境の場合は、venv内の `python.exe` を指定すること**
-   **GUIアプリでコンソールを非表示にしたい場合は `pythonw.exe` を使うこと**

この3つのポイントを押さえておけば、大抵のスクリプトは快適にタスクバーから呼び出せるはずです。