こんにちは。初めましての人もそうでない人も、
※以下、BloggerにUpしていた記事を移行した内容になります。
今日は仮想環境のPipenvで生成されるフォルダやファイルについて説明したいと思います。
Pipenv環境って具体的にどんな感じなの?というのを掴んでいただくことが目的です。
もし、"そもそも仮想環境ってなぁに?"という方がいらしたら、先に下記の記事をお読みください。
説明の前に断り書きですが、以下でPyCharmの画面を用いて説明を行います。
あくまでPipenv環境のイメージを掴んでいただくことが目的なので、PyCharm環境でのPipenvの設定方法については今回触れません。
もしPyCharm環境でのPipenv設定方法を知りたい場合は、以下の記事をご参照ください。
さて本題です。
Pipenvで仮想環境を作成すると、プロジェクト直下に以下のような「Pipfile」が生成されます。
これはインストールしたライブラリを管理するためのファイルです。
具体的な例を見ていきましょう。
pythonでコーディングをする際、import文を書くことがよくあると思います。
しかしただ記載するだけでは、コンパイルエラーとなります。
PyCharmだと以下のように赤い波線でエラー表示されていますね。
これは必要なライブラリがインストールされていないからです。
では、ライブラリ"pandas"をpipenvコマンドでインストールしてみましょう。
インストールが完了すると、コンパイルエラーが解消されます。
さてここで、PipFileの中身を見てみましょうか。
下記の画面の左側がインストール前、右側がインストール後のPipFileです。
緑色の背景色になっている箇所が、変更箇所です。
インストールを行った"pandas"が追加されているのがわかりますね。
このようにPipFileにはユーザーがコマンド実行でインストールしたライブラリが記録されます。
今回は特にバージョン指定せずインストールしたので"*"となっていますが、バージョン指定すると"*"の代わりに指定したバージョン番号が記録されます。
他の変更ない箇所は、Pythonのバージョンなど、全体的な環境の情報になります。
さてもう一つのファイル、PipFile.lockを見てみましょう。
はい、見てわかる通り、インストール実行した"pandas"以外にも、"numpy"や"pytz"など、特に自分ではインストール実行していないライブラリが記載されています。
これらは"pandas"に必要な依存ライブラリです。
我々ユーザーとしては特に意識していませんが、Pipenvで"pandas"に必要なものを判断して、勝手に入れてくれたものですね。
さらに各ライブラリの情報を見ると、バージョンとhashについて必ず記載があります。
これらは、仮想環境内に入れたライブラリを厳密に管理するための情報です。
例えば他の人にソースを共有した際、Pipenvはこれらの情報を元に仮想環境を構築します。
ところで仮想環境とは、インストールしたライブラリを入れている箱のようなものだと以前ご説明いたしました。
(参照:【連載】Pythonのライブラリや仮想環境ってなぁに? 第3回 仮想環境ってなぁに? - あまやどり開発雑記)
ではその箱の中身を実際に見てみましょう。
PyCharmですと、設定画面から仮想環境のパスを以下のように設定画面から確認できます。
以下の画面上部「Python Interpreter」の欄を見ていただくと、「.virtualenvs\Trial-rKEqFeaL」というフォルダがパスに記載されているのがわかりますね。
実際にこのフォルダをエクスプローラーで見てみましょう。
こんな感じです。
色々とフォルダがありますが、中でもLib配下を見てみましょう。
こんな感じで、ライブラリ毎のフォルダが生成されています。
これらのフォルダの中身をさらに見ると、ソースコードが入っています。
(コンパイル済のソースのみで読めない状態で入ってるものもあります)
これが、Pipenvにおける仮想環境の実体というわけです。
似たようなフォルダはpipでもAnacondaでも生成されているはずです。
ちなみに、これらの仮想環境に入っているソースは、PyCharm上からでも見ることができます。
PyCharmですと、例えばプログラム実行時にライブラリ側の処理でエラーが起きてTraceBackが出力された場合など、簡単にライブラリの中身のソースを参照することができます。
以上で仮想環境Pipenvを利用した場合のファイルやフォルダについての説明終わります。
なんとなくイメージは掴めたでしょうか?
次回は、Gitの基本的な構成やコマンドのイメージについてと、PyCharmでのGitHubの環境構築手順についての記事を更新していこうと考えています。
引き続きお読みいただければ幸いです。
-----------------------------------
素材取得元