1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【python環境構築】venvからpipenv環境に変えてみたら良かった

Posted at

課題

依存関係の管理がほしくなりました。

経緯としては、もともとvenv+pyenvでpython環境構築していました。

ただ、Githubで管理したいがパッケージがおもすぎてpushできない問題がおこります。
そしてパッケージをgitignoreすると、localにしか依存関係を残すパッケージデータがありません。
つまり、何をインストールしたかの記録がないのです。

そこで依存関係を記録するrequirements.txtなんですが、、

venvだとPythonのパッケージ管理ツールがないので、手動で毎回下記コマンドによって、依存関係を作らないといけないです

pip freeze > requirements.txt

これ毎回やってたのですが、面倒で忘れそうでした。。

Nodeのpackage.jsonやpackage.lock.jsonのように自動で管理してほしかったのです。

対策

pipenvで仮想環境を作り直しました。

pipenvはvevnを内包していて、かつ自動でパッケージ管理してくれます。

  • pipenv で作成される仮想環境の特徴:
    • プロジェクトごとに独立した仮想環境が作成されます。
    • 仮想環境にインストールしたパッケージは、そのプロジェクト専用のものとして管理されます。
  • 仮想環境にパッケージをインストールする方法:
    • pipenv install パッケージ名プロジェクトディレクトリで実行 すれば、対応する仮想環境にパッケージがインストールされます。
    • 仮想環境を直接アクティブにしなくてもよい。

明らかにvenv環境の強化番だと思い試してみました。

試してみる

brew経由でインストール

brew install pipenv

システム環境を汚さず、安全にpipenvを利用します!

パッケージのインストール

  • パッケージのインストールや管理:
    • pipenv install でパッケージをインストールし、仮想環境に追加できます

      pipenv install demucs
      

そうすると、Pipfile に直接必要なパッケージが記録され、Pipfile.lock で依存関係が固定化されます!

#Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
demucs = "*"

[dev-packages]

[requires]
python_version = "3.9"
python_full_version = "3.9.6"


再インストール

git cloneして、別の端末で環境構築してみました。

PipfilePipfile.lock をプロジェクトに含めれば、以下のコマンドで同じ環境を再現可能です!

pipenv install

これだけで、仮想環境とパッケージ管理できるの超便利です!

仮想環境内でのPythonスクリプト実行

2種類あります。
私はBが便利なので、Bを採用してます。

  • 仮想環境内でスクリプトを実行する方法:
    • A 仮想環境をアクティブにして実行:

      pipenv shell
      python your_script.py
      
      

      実行後、deactivate で仮想環境を終了できる。

    • B 仮想環境をアクティブにせず直接実行:

      bash
      コピーする編集する
      pipenv run python your_script.py
      
      

Bのほうがシンプルで効率的でした!

まとめ・感想

pipenvはパッケージの依存関係と、仮想環境を両方管理することができます。

Dockerfile書くより仮想環境がお手軽で、かつパッケージ管理自動化できるので、しばらくはこの方法で開発しようと思います!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?