Pythonの世界でnpmと似たものが欲しい
node.jsやっててnpmなしでは生きていけない体になった人がpythonやるときに似たようなツールないかなー、と探したらpipenvがいいらしいのでよく使いそうな使い方をまとめてみた。
ちなみにnpmだとpackage.jsonがあるディレクトリ下を作業領域にするけど、pipenvはPipfileがあるディレクトリでpipenv shellを実行して作業領域(仮想環境と呼ばれる)に入る。
対応表
npm init
npmではpackage.jsonを生成する。
$ pipenv install
Pipfileがない場合は新しくPipfileとPipfile.lockを生成する。
npm install
npmではpackage.jsonに記述されたモジュールのインストールを行う。
$ pipenv install
Pipfileがある場合Pipfileに記述されたモジュールの仮想環境へのインストールを行う。
Pipfileのpython_versionにインストールされていないバージョンが指定されていたらインストールするかどうか聞かれて、自動インストールできるらしいけど試してみたところエラーで止まってしまった……。
npm install -g (モジュール名)
(多分)
$ pipenv install --system
※Python力が足りなくて適切な実験例が思いつかなかったので自信ない
npm install --save (モジュール名)
$ pipenv install (モジュール名)
特にオプションをつけなくてもPipfileの[packages]に追加してくれる。
npm install --dev (モジュール名)
$ pipenv install --dev (モジュール)
-dでもOK。Pipfileの[dev-packages]に追加してくれる。
npm uninstall (モジュール名)
$ pipenv uninstall (モジュール名)
npm list [-g]
$ pipenv graph
ちなみに
$ pipenv check
で脆弱性チェックをしてくれるらしい。優秀すぎないか?
npm test
たぶん対応するコマンドはない?
npm run (任意)
たぶん対応するコマンドはない?
ありました(コメントで @tanamon さんに教えてもらった)。
[scripts]
printfoo = "python -c \"print('foo')\""
Pipfileにこのように書いておいて
$ pipenv run printfoo
こうやって呼び出す。
その他
$ pipenv --rm
で仮想環境の削除ができる。