Python開発環境構築 2020 [Pythonインストールからpoetry導入まで] 

# Python開発環境構築

この記事は筆者が2020年4月現在採用している開発環境の構築方法です．主にLinux, Mac Userを対象としています．Raspberry PiやTinker board, Jetson nanoなどの特殊な環境は除きます．参考までに筆者の環境はUbuntu 18.04です．Windowsでの環境構築は茨の道なので，非推奨とします．Ubuntuをdual bootするか，[WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10)を導入した後，以下に進んでください．Pythonを始める友人のために執筆したもののため，冗長な部分がありますが適宜飛ばしてお読みください．

ここでは以下ツールのインストールについて説明しています．使用方法は[別記事](https://qiita.com/MasashiSD/items/a8ddc0b039a5b112b109)で説明します．poetryでなくpipenvを使用したい方は各自調べてください．

- [homebrew (mac userのみ)](#homebrewのインストール-mac-userのみ)
- [git](#gitのインストール)
- [python](#pythonのインストール)
- [pyenv (optional)](#pyenv-optional)
- [poetry](#poetry)

## 開発環境の構築に必要なツールのインストール

ここでは最低限`brew`(Mac userのみ)と`git`のインストールを説明します．インストールの際はターミナルでそれぞれのコマンドを実行してください．ターミナルの開き方はubuntuの場合 `ctrl + Alt + T`, Macは[この記事](https://syncer.jp/mac-terminal)を参照してください．ターミナルが何かわからない方は[この記事](https://techacademy.jp/magazine/5155)を参照してください．開発の中でメインで使用するツールです．ぜひ慣れていきましょう．

### homebrewのインストール (mac userのみ)

こちらは以下を参考にインストールしてください．

- [Mac Homebrewインストール手順](https://awesome-linus.com/2019/08/17/mac-homebrew-install/)

### gitのインストール

softwareのバージョン管理ツールです．使用方法は入門の域を超えると判断しここでは詳しくは説明しません．このツールも今後チームでの開発に限らず，単独での開発の際にも必須のものになります．ゆくゆくは使用方法を覚えましょう．すでにインストールされている方はこの項は飛ばしてください．

#### linux user

- インストール方法

  ```sh
  sudo apt update
  sudo apt upgrade
  sudo apt install git-all
  ```

- [参考link](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)

#### mac user

- インストール方法

  ```sh
  brew install git
  ```

## Pythonのインストール

この項はPython自体がインストールされていない人のためです．すでにインストールされている場合は飛ばしてください．

### インストールの確認

インストールされているかを確認するには，ターミナル上で以下を打ちます．

```sh
python3 -V
```

上記コマンドを打ち，表示されないまたは3.5以下の数字が表示された場合は以下に進んでください．3.6以上のバージョンがインストールされている場合は[仮想環境のインストール](#仮想環境のインストール)に進んでください．

### Linux系OS(Ubuntu等)を使用しているユーザー

sudo権限がある場合，

`sudo apt install python`

sudo権限が無い場合，[homebrew](https://docs.brew.sh/Homebrew-on-Linux)を導入した後，以下を実行．

`brew install python`

### Macを使用しているユーザー

`brew install python`

## 仮想環境のインストール

今後，様々なプログラムを作成する上で，多様なライブラリをその都度インストールして，使用することになります．一箇所にまとめて導入するような運用の場合，依存関係が複雑になり，後々，ライブラリのバージョン間の依存関係やPythonのバージョンを起因とするバグに悩まされることになります．これを回避するために使用するプログラムごとに仮想的なPythonの環境を構築し運用します．

### pyenv (optional)

好きなPythonのバージョンを手軽にインストールするときに便利です．後々異なるPythonの環境下での開発が必要になる際やライブラリの開発の関係で別のPythonのバージョンを試す際に使用出来ると非常に役に立ちます．[前の項](#Pythonのインストール)でひとまずPythonはインストールしているため，この部分はoptionalです．初めてPythonを触る人はここを飛ばし，[poetryのインストール](#poetry)に進んでも構いません．ターミナルで以下を打ちます． インストール方法は2020年4月現在のものです．最新の方法は[pyenv installation](https://github.com/pyenv/pyenv#installation)を参照してください．

#### Linux User

- 以下のコマンドを打ち，`~/.pyenv`にgitを使用してダウンロードします．

  ```sh
  git clone https://github.com/pyenv/pyenv.git ~/.pyenv
  ```

- このままだとパソコンがどこにインストールしたのか認識していないため，Pathを通してやる必要はあります．

  - For Ubuntu:

    ```sh
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
    ```

  - For Zsh:

    ```sh
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc
    ```

#### Mac User

- brewでインストールできます [参考](https://github.com/pyenv/pyenv#homebrew-on-macos)

  ```sh
  brew update
  brew install pyenv
  ```

#### pyenvを使用したPythonのインストール

- [このリンク](https://qiita.com/crankcube/items/15f06b32ec56736fc43a#python%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参照してください．

### poetry

仮想環境のツールにはvenv, virtualenv, pipenv等ありますが，2020年4月現在手軽に使用でき動作が軽量なpoetryを使用します．

- OSX / linux users

  ```sh
  curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
  ```

- 主な使用方法は[公式document (英語)](https://python-poetry.org/docs/basic-usage/)か[この記事(日本語)](https://org-technology.com/posts/python-poetry.html)を参照してください．
  - `poetry add`, `poetry remove`, `poetry show`, `poetry run`さえ使用できれば問題ありません．

- 次にpathを通します．
  - Ubuntuの場合

    ```sh
    echo 'export PATH=$HOME/.poetry/bin:$PATH' >> ~/.bashrc
    ```

  - Macの場合

    ```sh
    echo 'export PATH=$HOME/.poetry/bin:$PATH' >> ~/.zshrc

    ```

## 参考リンク

- [Python環境構築ベストプラクティス2019](https://www.natsukium.com/blog/2019-02-18/python/)
- [pyenv installation](https://github.com/pyenv/pyenv#installation)
- [Mac Homebrewインストール手順](https://awesome-linus.com/2019/08/17/mac-homebrew-install/)