とっちゃん@nyanco! です。
今回はmacOSのpyenv(パイエンブ)でインストールしたPython(パイソン)をターミナルウィンドウを起動せずに実行する方法の覚書というお話です。
Windowsでコマンドプロンプトを開かずに実行するには拡張子を変えるだけでOKですが、macOSで同じことをやろうとすると少々手間がかかります。
macの標準アプリ「Automator」を使っていくので新規アプリなどは不要ですにゃ〜
Python(pyenv)をターミナル起動せずに実行する方法
macOSに標準搭載の自動化アプリ「Automator(オートメーター)」を使っていきます。
▼Automatorを起動し、「新規作成」→「ワークフロー」をクリックします。
「アプリケーション」だと、Automatorを起動せずにアイコンをダブルクリックするだけでアプリのように.pyファイルを実行できるようになるのですが、.pyファイル内に記述した「強制終了」コマンドが効かなくなってしまったので今回は「ワークフロー」で進めていきます。強制終了など必要ない.pyファイルであれば「アプリケーション」でも良いかと思います。
▼ライブラリの「シェルスクリプトを実行」をダブルクリックします。
▼右側のペインに「シェルスクリプトを実行」が追加されるので、シェルが「/bin/zsh」になっていることを確認します。
「シェル」とは、OSとアプリケーションの中間に位置する伝言役的なプログラムのことで、macではCatalinaからデフォルトシェルが「zsh(ゼットシェル)」となっています。ちなみにCatalinaより前は「bash(バッシュ)」というシェルでした。
なぜ「シェル(貝殻)」なのか?をざっくり言うと、ユーザーが直接触れないようにOSのコアな部分を貝殻のように包んで守っているから!とのことです。個人的にとってもしっくりきました。
→【参考記事】デジタル大辞泉 「シェル」の意味・読み・例文・類語
▼続いてシェル選択の下にあるスクリプト記述欄に以下のコードをコピーペーストします。
#!/bin/zsh
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
[Python本体があるパス] [実行したい.pyファイルのパス]
1〜5行目はそのままでOKですが、7行目の2つのファイルパスはユーザーの環境によって異なるので調べる必要があります。
調べるといっても簡単ですにゃ〜!
まず、[Python本体があるパス]は、ターミナルで以下のコマンドを実行すると教えてくれます。
which python3
続いて [実行したい.pyファイルのパス] は、.pyファイルを「option」キーを押しながら右クリックすると表示される「”text.py”のパス名をコピー」をクリックするとパスがコピーできます。
右クリックメニューは「option」キーを押すと普段は表示されない隠しメニューが表示されますにゃ〜
参考までに、筆者の場合は以下のようになりました。
#!/bin/zsh
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
/Users/t/.pyenv/shims/python3 /Users/t/Desktop/test.py
[Python本体があるパス] と [実行したい.pyファイルのパス]との間には半角スペースが必要となるので要注意です。
以上で完了です!
▼あとはAutomatorの「実行」をクリックすると.pyがターミナルウィンドウが開かずに実行されるはずです。
最後にAutomatorのワークフローファイルに分かりやすい名前をつけて保存しておけばOKですにゃ〜!
.pyファイルが複数ある場合は、[実行したい.pyファイルのパス]をそれぞれのパスに変更したワークフローファイルが.pyファイルの数だけ必要となります。
おわりに
ターミナルウィンドウは起動しなくなりましたが、いちいちAutomatorを起動しないといけないのでもっとシンプルな方法はないか…模索中です ^^;
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント