2022年12月22日お悩みさん毎回、Pythonのスクリプト実行がめんどくさい!実行を自動化する方法を教えて!Pythonで作業の自動化に励んでいると、コードは書けたけど、毎日スクリプトの実行とか、まじ、めんどさい!そんなことを思うのは当然の真理ですよね。自動実行についての記事はあるものの、Pythonの仮想環境であるPoetryを使った自動実行の記事が全然見つかりませんでした。cronを使って、スクリプト自動実行の方法をご紹介していきます。HomebrewこれからPythonで仮想環境を使いたいという方にはPoetryのおすすめ記事も書いていますよ!よければ、以下の記事も参考にしてください。Pythonを利用する上で、知っておくべきことがあります。それは仮想環境を使うことです。【前提】ファイルの構成と、スクリプト実行していくファイルの構成は以下の通りです。みづらいですが、デスクトップのtest_cronフォルダに、3つスクリプトを作成しました。test.pycron.shcron.log(poetryのvenvファイルと、lockファイルはpoetryの通常ファイルですね。)PythonスクリプトまずはPythonスクリプトを作ります。test.pyファイルに以下の記述をしました。print('hello')【悲報】cronでpoetryコマンドが使えない・・・?後述するcronを使ってスクリプトの自動実行を設定するのですが、ここで注意点です!poetryをはじめ、仮想環境(venv)下のpythonを使う場合、cronから直接pythonの実行指示をすることができません。cronを実行しても、venv内のpythonを見つけてくれないのです。残念ながらcronで直接poetryコマンドも実行ができません。̄|○いやいや、諦める必要はありませんので、安心してください★shスクリプトの作成そこで、shスクリプトを作成します。shファイルはシェルスクリプトに書く記述を実行してくれるスクリプトです。ファイルのcron.shに以下の記述をしました。xxxxxxxxxの部分にはご自身の情報を入れてください。log用スクリプトの作成cronを実行した際のlog(ログ)を書き出すために、同じファイルに、cron.logという空のファイルを用意しておきます。これで、スクリプトの作成は完了です。shスクリプト作成の注意点ちなみに僕がてこずった箇所、大きくこの2点はぜひ注意してください。注意点1:絶対パスで記入するcron.shスクリプトの2行目:cdの後ろにはフォルダの絶対パスを書いて、.shのファイルがある場所を指定します。パスのコピーができます。Poetryコマンドも絶対パスです。Poetryのパスがわからなければ以下で確認が可能です。poetryまたpythonスクリプトも同様に、絶対パスで記述します。#←cronを使わなければこれで良かったが、cronを使う場合は、絶対パスでの記述が必要なため以下に変更が必要です。/Users/xxxxxxxxx/Desktop/test_cron/test.py注意点2:ドットを忘れずに書く3行目の頭に「.」(ドット)をつけるのを忘れないようにしてください。.venv/bin/activatこれがないと実行ができないんです。汗cron(クーロン)はMacの予約ソフトcron(クローン)とはMacに標準で入っているプログラミングのスケジュールソフトです。パソコンが起動さえしていれば、cronを使って、プログラムの自動実行が可能です。(ちなみに、Windowsではタスクスケジューラーを使います!)おすすめの動画(動画の解説は、Winの方でも、Macの方でもOKです)cronの設定については、いろいろな記事が見つかると思うので簡単に説明をします。使っている方は飛ばしてOKです。ちなみに以下の動画で設定方法が詳しく解説されていますよ!初めてcronを使う方へ:cronの設定方法まずはセキュリティのアクセス権を許可します。設定の、セキュリティとプライバシーからフルディスクアクセスを選択。鍵マークを外してから、cronを追加するためには、+のボタンを押してください。cronで検索すると、表示されるので、こちらを選んで、チェックマークを入れて、最後に鍵を閉じれば完了です。続いて、cronをvimで編集できるように以下を実行します。vim続いて、パスを通します。$PATHこれで、cronの編集が簡単にできるようになりました。cronの設定cronの編集は以下のコマンドを実行します。押せば、編集が可能になります。今回は以下のような記述を入力しました。部分を変更することで好きに設定が可能です。保存は、escボタンを押してから、:wqを入れてエンターです。ここでは割愛していますが、詳しいcronの記述は以下を参考にしてください。これにより、shスクリプトの実行を命令することができます。今回は、shファイルを、デスクトップのフォルダにいれているので以下のパスを入れています。実行結果は、cron.logに記入をされています。指定した時間以降に、実際にpoetryが実行されているかを確認してください。logにも以下が記入されていたので、無事に実行がされたようです。helloもしもエラーがでていたらエラーの場合は、logにエラーの内容が記載されています。shファイルは、./をつければ、そのまま実行が可能です。今回の場合は、以下のコマンドです。./cron.sh一度、cronを使わず、shファイル単体で実行ができるかも確認してみてください。まとめcronを使って、自動でpoetry下のpythonを実行する方法をご紹介しました。Analyticsのレポートを毎日手動でスクリプト実行するのではなく、毎朝自動で、レポートを書き出すような使い方が可能です。業務の効率化に役立ててください。'cleo'の対処法この記事を書いた人クリワン節約に励むマーケターです!30歳を機に別職種から、マーケターにキャリアチェンジ。IT企業で専任のマーケターをしています。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。‘SequentialFeatureSelector’の対処法|sklearnのImportError最近のコメント表示できるコメントはありません。