---
# System prepended metadata

title: Python 仮想環境の構築

---

# Python 仮想環境の構築 
How to create virtual environment (Python)
English follows Japanese

プレ輪講がんばりましょう:hugging_face:
## pyenvとanacondaのインストール
### 1. pyenvのダウンロード
- githubのレポジトリから、pyenvをダウンロードします。
    ```sh
    $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
    ```
### 2. pathを通す

- **`~/.bash_profile`を作成**
    `.bash_profile`とは、起動時に自動で読み込まれる設定ファイルのことです。ファイルが存在しない場合もあるので、vimでファイルを作成つつ、書き込んでいきましょう。参考：[.bash_profileとは](https://wa3.i-3-i.info/word13650.html)

    ```sh
    $ vi ~/.bash_profile
    ```

- **pathの書き込み**
    vimで開いた`.bash_profile`の中に、pathを通すための設定を書き込みます。ここでは、pyenvとcudaの設定を書き込んでおきます。
    
    vimを使ってクリップボードからペーストする場合は、`i`を押して挿入モードに入ってから、windowsの場合は`Shift+Insert`、macの場合`⌘Command+V`でペーストしましょう。できない場合は右クリックして貼り付けてくださいね。編集が終わったら`Esc`を押してから`:wq`を押して保存しましょう。
    
    ```sh:~/.bash_rc
    # pyenvの設定
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    
    # CUDAの設定
    export CUDA_HOME=/usr/local/cuda-11.0
    export PATH=${CUDA_HOME}/bin:${PATH}
    export CPATH=${CUDA_HOME}/include:$CPATH
    export LIBRARY_PATH=${CUDA_HOME}/lib64:$LIBRARY_PATH
    export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
    ```


- **pathを通す**
    ```sh
    $ source ~/.bash_profile
    ```
### 3. 最新のAnacondaをインストール、環境の切り替え
- **最新のAnacondaをインストール**
    ```
    $ pyenv install anaconda3-2020.11
    ```
    - 注：`pyenv install -list` で、インストール可能な環境の一覧を取得できます。今回は最新のものを使います。
    
- **環境の切り替え**
    ```
    $ pyenv global anaconda3-2020.11
    ```

- **環境が変わっているかどうかの確認**
    以下のコマンドを打った時に`anaconda3-2020.11`と返ってくれば成功！
    ```
    $ pyenv version
    anaconda3-2020.11
    ```
    - 注：ちゃんと切り替えられていない場合は、`system`と返ってくると思います。
    
- **仮想環境の中にpipを入れるための設定**
    `.bash_profile`に、必要な情報を書き込みます。以前書いた内容の下に、追記するようにして書いてください。
    
    1. vimで`.bash_profile`を開きます。
    ```sh
    $ vi ~/.bash_profile
    ```
    
    2. ファイルに追記します。
    ```sh:~/.bash_profile
    # anacondaの設定を読み込む
    . ~/.pyenv/versions/anaconda3*/etc/profile.d/conda.sh
    ```
    
    3. ファイルを更新したので、実行しておきます。
    ```sh
    $ source ~/.bash_profile
    ```

# 仮想環境の作成・セットアップ
Pythonを使って実験を行う時には、実験ごとに専用の実行環境を作成して異なるPythonのバージョンやライブラリを使えるようにします。用途に応じた専用の実行環境を仮想環境と言います。参考：[仮想環境とは](https://qiita.com/ozaki_physics/items/985188feb92570e5b82d)
- **仮想環境の作成**
    "test_env"という名前の仮想環境を作成します。今回は、Pythonのバージョンを3.8にします。
    ```
    $ conda create -n test_env python==3.8
    ```
- **仮想環境を開く**
    仮想環境を立ち上げるときには、`conda activate <環境名>`を実行します。環境を閉じたい時は`conda deactivate`を実行します。
    ```
    $ conda activate test_env
    ```
- **jupyterとpipをインストール**
    必要なライブラリをインストールします。
    ```
    $ conda install jupyter pip
    ```
    
- **pipの場所確認**
    pipがanacondaの仮想環境の下に入っていることを確認します。以下のように`.pyenv/versions/anaconda3-2020.11/envs/test_env/bin/`の下にpipが入っていれば正しいです。
    ```sh
    $ which pip
    /home/mil/<ユーザー名>/.pyenv/versions/anaconda3-2020.11/envs/test_env/bin/pip
    ```
- **pytorch(v1.7.1)をインストール**
    CUDA 11.0に対応したpytorch v1.7.1をインストールします。
    今入っているサーバーがCUDA 11.0に対応しているか確認します。[MIL AQUARIUM](http://tai:3000/)で自分が使っているサーバーがCUDA 11.0に対応しているかどうかを確認します。
![](https://i.imgur.com/ztClvCG.png)

    ※将来的に別のversionのpyenvをインストールする必要があれば[Pytorchの公式ウェブサイト](https://pytorch.org/get-started/previous-versions/)から必要なバージョンを探して、インストールしましょう。
    
    ```
    $ conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch
    ```


# Pytorchの実行
- GPUを使ってPytorchのコードを動かしてみる
    ```sh
    $ cp -r /home/mil/umagami/pytorch_practice ~/.
    $ cd ~/pytorch_practice
    $ pip install scikit-learn
    $ python iris.py
    ```
    - うまく行ったら
        ```
        GPU使えてるよ~
        正解率: 0.95以上くらい
        ```
        と表示されます！
        
        

# How to create virtual environment (Python)
English ver.

Good luck with the pre-runner up:hugging_face:
## Installing pyenv and anaconda
### 1. download pyenv
- Download pyenv from the github repository.
    ```sh
    $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
    ```
### 2. pass through path

- **Create `~/.bash_profile`**.
    `.bash_profile` is a configuration file that is automatically loaded at startup. The file may not exist in some cases, so use vim to create the file while writing it. Reference: [.bash_profile is](https://wa3.i-3-i.info/word13650.html)

    ```sh
    $ vi ~/.bash_profile
    ```

- write in **path**.
    In `.bash_profile` opened with vim, write the settings to pass through the path. Here, we will write the settings for pyenv and cuda.
    
    To paste from the clipboard using vim, press `i` to enter insert mode, then press `Shift+Insert` on windows or `⌘Command+V` on mac. If you can't, right click and paste. When you are done editing, press `Esc` and then press `:wq` to save it.
    
    ```sh:~/.bash_rc
    # pyenv configuration
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    
    # Configure CUDA
    export CUDA_HOME=/usr/local/cuda-11.0
    export PATH=${CUDA_HOME}/bin:${PATH}
    export CPATH=${CUDA_HOME}/include:$CPATH
    export LIBRARY_PATH=${CUDA_HOME}/lib64:$LIBRARY_PATH
    export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
    ````


- through **path**
    ```sh
    $ source ~/.bash_profile
    ```
### 3. install latest Anaconda, switch environment
- **Install the latest Anaconda**.
    ```
    $ pyenv install anaconda3-2020.11
    ```
    - Note: You can get a list of installable environments with `pyenv install -list`. We will use the latest one.
    
- **Switching Environments**.
    ````
    $ pyenv global anaconda3-2020.11
- **Check if the environment has changed**.
    If you get back `anaconda3-2020.11` when you type the following command, success!
    ```
    $ pyenv version
    anaconda3-2020.11
    ```
    - Note: If it is not switched properly, it will return `system`.
    
- **Configuration for pip in virtual environment**.
    Write the necessary information in `.bash_profile`. Please write it as an addendum under what you wrote before.
    
    1. Open `.bash_profile` with vim.
    ```sh
    $ vi ~/.bash_profile
    ```
    
    2. Append to the file.
    ```sh:~/.bash_profile
    # Load anaconda configuration
    . ~/.pyenv/versions/anaconda3*/etc/profile.d/conda.sh
    ```
    
    3. Now that the file has been updated, run it.
    ```sh
    $ source ~/.bash_profile
    ```

# Create and set up virtual environment
When conducting experiments using Python, create a dedicated runtime environment for each experiment so that different Python versions and libraries can be used. A dedicated runtime environment is called a virtual environment. Reference: [What is a virtual environment](https://qiita.com/ozaki_physics/items/985188feb92570e5b82d)
- **Creating a virtual environment**.
    Create a virtual environment named "test_env". In this case, we will use Python version 3.8.
    ````
    $ conda create -n test_env python==3.8
- **Open the virtual environment**.
    To launch the virtual environment, run `conda activate <environment name>`. To close the environment, run `conda deactivate`.
    ````
    $ conda activate test_env
- **Install jupyter and pip**.
    Install necessary libraries.
    ```
    $ conda install jupyter pip
- **Check pip location**.
    Make sure pip is under the anaconda virtual environment. It is correct if pip is under `.pyenv/versions/anaconda3-2020.11/envs/test_env/bin/` as follows.
    ``sh
    $ which pip
    /home/mil/<username>/.pyenv/versions/anaconda3-2020.11/envs/test_env/bin/pip
    ````
- **Install pytorch (v1.7.1)**.
    Install pytorch v1.7.1, which is compatible with CUDA 11.0.
    Check if the server you are currently on supports CUDA 11.0. Check [MIL AQUARIUM](http://tai:3000/) to see if your server supports CUDA 11.0.
! [](https://i.imgur.com/ztClvCG.png)

    *If you need to install another version of pyenv in the future, go to [Pytorch's official website](https://pytorch.org/get-started/previous-versions/), find the version you need and install it. The following is an example.
    
    ````
    $ conda install pytorch==1.7.1 torchvision=0.8.2 torchaudio=0.7.2 cudatoolkit=11.0 -c pytorch
    ````


# Run Pytorch
- Try to run Pytorch code using GPU
    ```sh
    $ cp -r /home/mil/umagami/pytorch_practice ~/.
    $ cd ~/pytorch_practice
    $ pip install scikit-learn
    $ python iris.py
    ````
- If it works, 
    ```
    GPU使えてるよ~
    正解率: 0.95以上くらい
    ```
    will be displayed!

