Python仮想環境

## TL;DR

Pythonでは、Dockerなどを用いることなく簡単に仮想環境を構築することができます。

### 仮想環境のメリット
- PC自体にライブラリをインストールしなくていいので無駄にハードディスク内を汚さなくて済む。（簡単にポイできる）
- そのプロジェクトで使用ライブラリを一括インストールできるので複数人での開発でも便利

**わかりやすいように下の方に図解あり。**

## 仮想環境

## プロジェクトフォルダを開く

任意のディレクトリ（デスクトップとかお好きなところ）にフォルダを作ります。
pythonファイルなどを作っていく作業フォルダになります。

VSCodeで先ほど作成したフォルダを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/d7d1e3bd-8458-969f-ecdb-78f836435684.png)
次にターミナルを開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/cf5a05ed-62c0-5c7d-bb70-e52d1ad1660e.png)
ターミナルで先ほど作成したフォルダのディレクトが表示されていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/3ac2656e-cbe6-14db-5257-45d4f760b0fe.png)



### 仮想環境作成 

プロジェクト作成時に行うこと。

```sh
$ python3 -m venv [フォルダ名]
$ python3 -m venv .venv
```

.venvというフォルダができたかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/0792c569-d491-df86-dad8-4ec09a0e849a.png)
ここにライブラリをインストールしていくことになります。
プロジェクトで一度作れば次回からはこのコマンドは必要なし。

### 仮想環境に入る

```sh
Windows
$ source .venv/Scripts/Activate
Mac
$ source .venv/bin/activate
```
シェルに`(.venv)`と表示されていれば仮想環境内に入っている状態です。
特殊な設定をしていない限りは、**上の行か先頭に`(.venv)`が表示されます**。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/e1d68640-30f1-f7e6-65f4-76527338eafc.png)

### VSCodeのインタープリター設定

venvの表示がなければクリックしてvenvがついてるものを選択します。venvの表示があればそのままでOK！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/3c090a5c-f0e7-f0f9-b91e-bc7994388b37.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/40e5bc49-19fe-49a3-1d4b-38f3e4e418a6.png)
venvがついてるものを選択
（項目のない場合はVSCodeを再起動するか少し待てば出てくることがあります。）
これで仮想環境に入れました。

## ライブラリインストール

```sh
$ pip install <ライブラリ>
```

## pipの一括インストールオプション

インストールしたライブラリを書き込み

```sh
$ pip freeze > requirements.txt
```

requirements.txtのライブラリを一括インストール

```
$ pip install -r requirements.txt
```

仮想環境に入ってる状態でインストールしないとローカルに一括インストールされてしまう。
一括インストールするときは必ず仮想環境の中に入っていることを確認する。

## 図解

### 仮想環境図解

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/1492273a-3413-b8ba-323d-341c7adc5f54.png)

仮想環境に入らずに通常時に`pip install`でライブラリをインストールしてしまうとPC自体にインストールされてしまう。
あまり無駄にPCを汚したくないですよね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/b4312615-9856-c80b-22be-c5e19fa3eac9.png)

基本ライブラリは`Python.exe`があるところにインストールされるので、仮想環境に入った場合は.venvのフォルダ内にラインプラリがインストールされていく形になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/9a4f2e8f-f47c-f124-744e-5b33a81b11b4.png)

下記コマンドでrequirements.txtを作成します。
requirements.txtにはインストールされているライブラリの情報が書き込まれます。
今は仮想環境の中にいる体なので`.venv`フォルダ内にインストールされているライブラリの情報を書き出します。

```sh
$ pip freeze > requirements.txt
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/6f6278d6-b42a-6295-f8db-9d79fd3b0b8c.png)

requirements.txtもgithubのリモートリポジトリに上げておきましょう。

プロジェクトがひと段落したらgitにもうすでに上げているのでローカルのファイルは捨てちゃいましょう。
これで余分なものを残さずに済みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/8455a87c-0d1c-bfe7-d86f-2bb1f1778b72.png)

### 再度プロジェクトを触るとき

githubからcloneしてプロジェクトファイルを持ってきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/186840ad-2b7b-619b-0bd0-5012fcc3ab2c.png)

仮想環境ファイルはgitから除外されるので仮想環境を作ってその中に入ります。

```
$ python3 -m venv .venv
Windows
$ source .venv/Scripts/Activate
Mac
$ source .venv/bin/activate
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/1a754815-4ffd-03e7-458e-e25a03aa5986.png)

前回requirements.txtを作成しているので、
下記のコマンドでrequirements.txtに記述されているライブラリを一括でインストールできます。

```
$ pip freeze > requirements.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/d7d1bfe1-7dfd-b417-c66a-d9bb518c5a92.png)

これだけで、前回開発してた環境と同じ環境を作ることができました。

## おわりに
今はわかりづらいかもしれませんが、ライブラリを使い始めたときにもう一度読んでみると理解が深まると思います。