1. ホーム
  2. 記事一覧
  3. 仮想環境とパッケージ管理をまとめて解決! pipenvの基本

2024.04.14

仮想環境とパッケージ管理をまとめて解決! pipenvの基本

Pipenvの概要

チームメンバーと開発環境を共有しようとしたら、環境の不一致でトラブルになったことはありませんか?Pipenvは、Python開発の効率を大幅に高めるためのツールです。仮想環境の作成とパッケージ管理を一元化することで、プロジェクトの依存関係を明確かつ簡単に管理できるようになります。

Pythonプロジェクトでは、ライブラリのバージョンが異なるため、プロジェクト間での依存関係の衝突が問題となることがあります。Pipenvはこの問題を解決し、プロジェクト固有の仮想環境を作成して必要なパッケージをインストールします。これにより、開発者は依存関係の管理に煩わされることなく、各プロジェクトに必要なパッケージのバージョンを正確に維持できます。

また、Pipenvは PipfilePipfile.lock を使ってプロジェクトの依存関係を管理します。これにより、チームメンバー間で開発環境を容易に共有できるようになります。さらに、シンプルで直感的なコマンド操作も特徴で、新しい開発者でも参加しやすくなります。Pipenvはプロジェクト管理の効率化と開発者の生産性向上を実現する、Python開発にとって重要なツールといえます。

pipenv のインストール

まずはインストールして使ってみましょう。以下に、インストールするために必要な手順を簡単に説明します。

必要な環境

pipenv をインストールする前に、Python が既にインストールされていることを確認してください。pipenv は Python 3.7 以上で動作しますが、最新の機能を利用するためには、可能な限り最新バージョンの Python を使用することをお勧めします。

python -V

インストール方法

pipenv は Python のパッケージマネージャである pip を通じて簡単にインストールできます。以下のコマンドをターミナルまたはコマンドプロンプトに入力してください。

pip install pipenv
# インストールされたかどうか、バージョンを確認
pipenv --version

このコマンドは、グローバルに pipenv をインストールします。プロジェクトごとに異なるバージョンの pipenv を使用したい場合は、Python の仮想環境を作成し、その環境内で pipenv をインストールしてください。

pipenv でのプロジェクト作成

pipenv をインストールした後、次のステップとして Python プロジェクトの作成と、それに伴う仮想環境の設定があります。pipenv を使用すると、プロジェクトごとに独立した仮想環境を簡単に作成し、管理することができます。これはプロジェクトの依存関係を整理し、異なるプロジェクト間でのパッケージの衝突を避けるのに役立ちます。

  1. プロジェクトディレクトリの作成

    新しいプロジェクトを始めるには、まずプロジェクト用のディレクトリを作成します。例えば、myproject という名前のディレクトリを作成するには、以下のコマンドを使用します。

    mkdir myproject
    cd myproject
  2. 仮想環境の作成

    プロジェクトディレクトリ内で、以下のコマンドを実行して pipenv の仮想環境を作成します。

    pipenv install

    このコマンドは、現在のプロジェクトに対して新しい仮想環境を作成し、プロジェクトの依存関係を管理するための Pipfile を自動的に生成します。

  3. Pipfile の確認

    pipenv install コマンドの実行後、プロジェクトディレクトリ内に Pipfile が作成されています。このファイルは、プロジェクトの依存関係を記述し、プロジェクトがどのパッケージに依存しているかをpipenv と他の開発者に伝えます。

以上の手順で、pipenv を使用した Python プロジェクトの作成と仮想環境の設定が完了します。これにより、プロジェクトの依存関係を効果的に管理し、開発プロセスをよりスムーズに進めることができます。

パス設定(必要な場合)

pipenv をインストールした後、システムの PATH に pipenv のインストールパスを追加する必要があるかもしれません。これは、どこからでも pipenv コマンドを実行できるようにするためです。多くの場合、pip は自動的に適切なパスを設定しますが、うまくいかない場合は、以下の手順に従ってください。

  • Windows

    pipenv がインストールされたパスを環境変数の PATH に追加します。これは通常、C:\Users\<ユーザー名>\AppData\Roaming\Python\Python<バージョン>\Scripts のようなパスです。

  • macOS/Linux

    ターミナルを開き、次のコマンドを実行して pipenv のインストールパスを確認します。

    pipenv --venv

    出力されたパスを、~/.bash_profile, ~/.zshrc, または使用しているシェルの設定ファイルに追加します。

    export PATH="$PATH:/path/to/pipenv"

    変更を有効にするためには、設定ファイルを再読み込みするか、新しいターミナルセッションを開始してください。

これで、pipenv のインストールは完了です。次のセクションでは、pipenv を使用して Python プロジェクトの仮想環境を作成し、依存関係を管理する基本的な方法について説明します。

pipenv の基本的な使い方

pipenv を使用すると、Python プロジェクトの依存関係管理と仮想環境の管理が簡単になります。ここでは、pipenv の基本的な使い方について説明します。

  1. 仮想環境の作成

    プロジェクトディレクトリ内で以下のコマンドを実行することで、pipenv は自動的に仮想環境を作成します。もしプロジェクトディレクトリがまだない場合は、新しくディレクトリを作成してからコマンドを実行してください。

    cd /path/to/project
    pipenv install
  2. パッケージのインストール

    プロジェクトに必要なパッケージをインストールするには、pipenv install コマンドに続けてパッケージ名を指定します。

    pipenv install requests

    このコマンドは、requests パッケージを仮想環境にインストールし、プロジェクトの依存関係をPipfileに追加します。

  3. 開発用パッケージのインストール

    開発中にのみ必要なパッケージ(例:lintツールやテストフレームワーク)は、--dev オプションを付けてインストールします。

    pipenv install pytest --dev
  4. 仮想環境のアクティベート

    pipenv で作成された仮想環境をアクティベート(有効化)するには、以下のコマンドを使用します。

    pipenv shell

    このコマンドにより、仮想環境がアクティベートされ、その環境内で Python や他のコマンドを実行できるようになります。

  5. 仮想環境の終了

    仮想環境を終了し、通常のシェル環境に戻るには、exit コマンドを実行します。

    exit
  6. パッケージのアンインストール

    プロジェクトから特定のパッケージを削除するには、pipenv uninstall コマンドを使用します。

    pipenv uninstall requests
  7. PipfilePipfile.lock

    • Pipfile はプロジェクトの依存関係を宣言的に記述するファイルです。
    • Pipfile.lock は、プロジェクトの依存関係の具体的なバージョンを含むロックファイルで、環境を一貫性があり再現可能にします。
  8. 依存関係のロック

    プロジェクトの依存関係をPipfile.lockにロック(固定)し、他の環境で正確に再現するには、以下のコマンドを使用します。

    pipenv lock

これらは pipenv を使用する上での基本的な操作です。pipenv を使用することで、プロジェクトの依存関係管理と仮想環境の管理が簡単になり、Python プロジェクトの開発効率が大きく向上します。

pipenv の応用的な使い方

pipenv は、基本的な依存関係管理と仮想環境の作成を超えて、さまざまな応用的な機能を提供します。これらの機能を利用することで、開発プロセスをさらに効率化し、プロジェクトの品質を向上させることができます。

  1. 特定のPythonバージョンの指定

    プロジェクトで使用するPythonのバージョンをPipfileで指定することができます。これにより、チーム内でのPythonのバージョンの統一が保証されます。

    [requires]
    python_version = "3.8"
  2. 開発環境と本番環境の分離

    pipenv install --devを使用してインストールした開発用のパッケージは、本番環境にはインストールされません。これにより、開発環境と本番環境を効果的に分離できます。

  3. スクリプトの実行

    Pipfileにスクリプトを定義し、pipenv runコマンドを使用してそれらのスクリプトを実行することができます。これにより、複雑なコマンドを簡単に実行できるようになります。

    [scripts]
    test = "pytest"

    実行方法は次の通り。

    pipenv run test
  4. パッケージのセキュリティチェック

    pipenv check コマンドを使用して、プロジェクトの依存関係に脆弱性がないかをチェックできます。これにより、セキュリティリスクを早期に発見し、対処することができます。

    pipenv check
  5. グラフの表示

    pipenv graph コマンドを使用して、プロジェクトの依存関係のグラフを表示できます。これにより、パッケージ間の関係を視覚的に理解することができます。

    pipenv graph
  6. 本番環境でのパッケージインストール

    pipenv install --ignore-pipfile を使用することで、Pipfile.lock に基づいてパッケージをインストールし、開発環境と完全に同じ環境を本番環境に作成することができます。Pipfile.lockに基づいて依存関係をインストールすることで、開発環境と本番環境の間で一貫性を保つために特に有用です。

    pipenv install --ignore-pipfile

以上の通り、pipenv をフルに活用することで、Python プロジェクトの開発・管理・デプロイメントをより効率的に行うことができます。

この記事で学んだこと

この記事を通して、Pipenvを使用したPythonプロジェクトの効率的な管理方法について学びました。Pipenvを活用することで、次のような効果が得られます。

  1. 仮想環境の自動作成と管理

    • プロジェクトごとに独立した仮想環境を簡単に作成し、依存関係をプロジェクト内に閉じ込められます。
  2. 依存関係の明確な管理

    • PipfilePipfile.lockにより、プロジェクトの依存関係を明確にし、再現性のあるビルドが可能になります。
  3. 開発環境と本番環境の分離

    • 開発時のみ必要なパッケージと本番環境で必要なパッケージを明確に分けられます。
  4. セキュリティチェックと依存関係の可視化

    • プロジェクトのセキュリティを確認し、パッケージ間の関係を視覚的に理解できます。

Pipenvを使いこなすことで、Pythonプロジェクトの開発がシンプルで効率的になり、チーム内での共同作業もスムーズに行えるようになります。また、新しいメンバーの参加やさまざまな環境への移行も容易になります。

参考資料

Pipenvについてさらに詳しく学びたい方は、以下のリソースをご覧ください。

  • Pipenv: Python Development Workflow for Humans

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事