【小ネタ】Pipfileにスクリプトショートカットを作成する

2020.03.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスの小倉です。

最近は仕事でPythonを書くようになり、Python仮想環境の管理にPipenvを使うようになりました。
最近知ったのですが、Pipenvにはスクリプトショートカットを作成、実行する機能があり、
個人的にとても便利に使っているので紹介します。

Pipfileのscripts節

Pipfileには、以下のようにscripts節に、独自のスクリプトショートカットを書くことができます。

[scripts]
test = "ls"

定義したtestという名前のショートカットは、pipenv run test で実行することが出来、
この例ではlsコマンドが実行されます。
複雑な処理でなければ、Makefile や JavaScirptのpackage.json の様に使えそうです。

利用例

例えば、Python、Lambda Layers、AWS CDKでアプリを作る場合、
デプロイ前にインストールしたPythonモジュールをLambda Layersに纏めるのですが、

[scripts]
deploy = "bash -c \"PIP_TARGET='./layer/python' pipenv sync && cdk deploy xxxxxxxx\""

と書いておくと、pipenv run deploy を実行することで、

  • layer/pythonディレクトリへのモジュールインストール
  • CDKによるデプロイ

をまとめて実行出来ます。
PIP_TARGET についてはこちらのブログを参照ください
- 【小ネタ】Lambda Layersのパッケージ作成に便利!!pipenvでsync対象ディレクトリを指定する方法

余談

スクリプトショートカットは複数作成出来、それらをつなぎ合わせることも可能なようです。

[scripts]
command = "bash -c \"ls | xargs pipenv run command2\""
command2 = "stat"

pipenv run command を実行すると、lsコマンドの結果が、pipenv run command2 = stat コマンドに渡されます。
使い方次第ではもっといろんな応用が出来そうですね。良いアイディアがあればまたブログにしたいと思います。

おわりに

小ネタでしたが、個人的にLambda Layers+CDKでの開発が快適になったのでブログにしてみました。
この記事がどなたかのお役に立てば幸いです。
以上、大阪オフィスの小倉でした。