世界一簡単なPython3の導入

# 1. Pythonのバージョン
## 1-1. Python2とPython3
- メジャーバージョンが２つある。
- それぞれの間での互換性は無い。
- 旧来使われてきたのが、2系と言われるPython2。
- この2系は２０２０年１月でメンテナンスが終了
- 2系は日本語の扱いや不明瞭な標準ライブラリ体系などで不便と言われている。
- 覚えるなら3系と言われるPython3。

## 1-2. 最新バージョン
- 2019年4月時点での、最新は「Python3.7.3」
- 2019年11月時点での、最新は「Python3.8.0」

# 2.インストール
## 2-1. Windows
### 2-1-1. インストール
Windows10に公式インストーラを使ってPython3.7.2をインストール。
[Python公式サイト（Windows）](https://www.python.org/downloads/windows/)
このWebサイトから、
「Download Windows x86-64 web-based installer」
をクリックしダウンロードする。
ダウンロードしたファイルを開くと、インストールダイアログが表示されます。
インストールダイアログの途中で「Add Python 3.X to Path」のチェックボックスにチェックを入れ、
「Install Now」をクリックすると、インストールされます。

### 2-1-2. バージョンの確認

```
$ python -V
Python 3.6.1
```

### 2-1-3. 確認
コマンドプロンプトまたはパワーシェルから、コマンド「py」を実行して、
「>>>」が表示され、Pythonの対話モードに入れれば完了です。
対話モードを終了するには、「quit()」または「[Ctrl]+[z]+[Enter]」です。

## 2-2. macOS
### 2-2-1. インストール
デフォルトでPython2.7がインストールされています。
（近い将来に、Python3.Xに置き換わるかもしれません）
これは、macOSがPythonを使ったツールを使用しているためです。
ここでは、Python2.7と共存する形でPython3.Xをインストールします。
macOS 10.9以降のバージョンに公式インストーラを使いインストールします、
[Python公式サイト（macOS）](https://www.python.org/downloads/mac-osx/)
このWebサイトから、
「Download macOS 64-bit installer」
をクリックしダウンロードする。
ダウンロードしたファイルを開くと、インストールダイアログが表示されます。
そのまま指示に従ってクリックすると、Pythonのインストールが完了します。
その後に以下のコマンドを入力し、macOSのSSLルート証明書の利用を許可します。

```
$ cd /Applications/Python\ 3.7/Install/
$ ./Install\ Certificates.command
```

### 2-2-2. バージョンの確認

```
$ python -V
Python 2.7.10

$ python3 -V
Python 3.6.1
```

### 2-2-3. 確認
ターミナルから、コマンド「python3」を実行して、
「>>>」が表示され、Pythonの対話モードに入れれば完了です。
対話モードを終了するには、「quit()」または「[control]+[d]]」です。

# 3. 仮想環境の構築（今回は「venv」を使います）
１つのコンピュータの中に複数のPythonの実行環境を構築することができます。
Pythonのバージョンやライブラリのバージョンを複数実行できるようにすることも可能です。
例えば、XとYと言う２つのPythonプログラムを開発しているとして、
それぞれで、使用するバージョンが違う場合に役に立ちます。

[仮想環境の参考サイト](https://blog.codecamp.jp/programming-python-virtual-environment)

## 3-1. venvで仮想環境を作ります
Pythonには標準で「venv」と言うモジュールが提供されています。
公式インストーラでPythonを導入した方はこちらで仮想環境を作ることをお勧めします。
AnacondaでPythonを導入した方は、「conda」の方がメリットがあります。

他にも、「conda」や「virtualenv」と言うモジュールがあり、
メリットが多いようです。前述の参考サイトを参照のこと。
今回は、Python標準の「venv」を使って仮想環境の構築を行います。

## 3-2. 仮想環境構築の場所のコツ
Pythonの仮想環境は、特定の場所に配置したフォルダの単位で作られます。
例えば、「C:¥env_test¥」と言う場所に仮想環境を構築したら、
「env_test」フォルダの配下に、ライブラリなどが配置されます。
その仮想環境が不要になったら、そのフォルダをゴミ箱へポイで終わりです。
この仮想環境ですが、たくさん仮想環境を作って行くと思いますが、
仮想環境を配置するルートのフォルダを１つ作って、
そのフォルダの配下に仮想環境（フォルダ）を作る。と言うルールにした方が良いと思います。
どこに仮想環境を作ったか訳が分からなくなることを防ぎます。

## 3-3. Windows
コマンドプロンプトまたはパワーシェルから、
仮想環境を作りたいフォルダへ移動して、
以下のコマンドを実行すると「env_wk」フォルダに仮想環境が作られます。

``` 言語:仮想環境の作り方
> python -m venv env_wk
```
仮想環境を有効にするには、以下のコマンドを実行
完了すると、(env)>とプロンプトの前に仮想環境のフォルダ名が表示されます。

``` 言語:仮想環境を有効
> env_wk¥Scripts¥Activate.py
または
> env_wk¥Scripts¥Activate.bat

(env_wk) >
```
## 3-4. macOSの場合
ターミナルから、
仮想環境を作りたいフォルダへ移動して、
以下のコマンドを実行すると「env_wk」フォルダに仮想環境が作られます。

``` 言語:仮想環境の作り方
$ python3 -m venv env_wk
```

仮想環境を有効にするには、以下のコマンドを実行
完了すると、(env)$とプロンプトの前に仮想環境のフォルダ名が表示されます。

``` 言語:仮想環境の有効
$ env_wk\bin\
$ source ./activate
(env_wk) $
```

## 3-5. Pythonの起動方法と仮想環境の無効化
仮想環境が有効になっている時は、
コマンドプロンプトなどで「python」と入力すると、
有効化されているPythonが起動します。

``` 言語:Pythonの起動
(env_wk) > python
```

仮想環境の無効化は「deactivate」コマンドを実行します。

``` 言語:仮想環境の無効化
(env_wk) > deactivate
```

プロンプトが標準の表記に戻り、仮想環境から抜けたことがわかります。
不要になった仮想環境は、env_wkフォルダを消します。
追加インストールしたパッケージなどが削除されます。

また、
プロンプトの頭に環境名が表示されている間、
```python```コマンドでは作成した環境の python が実行される．

2系と3系の両方がインストールされており、
```python3```などと2系なのか3系なのかを明示することで使い分けている場合でも、
venv をアクティベートすると```python```コマンドでは作成した環境のものが実行されるようになる。

## 3-6. venvまとめ
作成する仮想環境名： env_wk

``` 言語:Windows
仮想環境の構築
> python -m venv env_wk

仮想環境の開始
> env_wk¥Scripts¥activate

仮想環境の終了
> deactivate
```

``` 言語:MAC
仮想環境の構築
> python -m venv env_wk

仮想環境の開始
> source env_wk/bin/activate

仮想環境の終了
> deactivate
```

## 3-7. pip(ライブラリの管理)
Pythonに標準で提供されていない機能を
サードパーティ製パッケージとして準備し拡張することができます。
多くのパッケージが、[PyPI](https://pypi.org)で配布されています。
パッケージのインストールには「pip」コマンドを使います。

``` 言語:パッケージ
インストール
$ pip install [package-name]
アップデート
$ pip install -U [package-name]
アンインストール
$ pip uninstall [package-name]
詳細内容(インストール場所など)
$ pip show [package-name]
```

``` 言語:pip依存関係の確認
$ pip check

依存関係に問題がない場合
No broken requirements found.
依存関係に問題がある場合
wagtail 2.6.1 has requirement django-modelcluster<5.0,>=4.2, but you have django-modelcluster 5.0.
```

``` 言語:パッケージのリスト
すべて表示
$ pip list
アップデートが必要なもの
$ pip list -o
最新になっている(update不要な)もの
$ pip list -u
```

``` 言語:パッケージをパッケージ名==バージョンで表示
$ pip freeze

ファイル出力しておいて
$ pip freeze > requirements.txt

これで一括インストール
$ pip install -r requirements.txt
```
参考サイト：[Python, pipでrequirements.txtを使ってパッケージ一括インストール](Python, pipでrequirements.txtを使ってパッケージ一括インストール)

# 4. 機械学習やデータ解析で使うパッケージ
機械学習やデータ解析の分野で使用される定番ライブラリは以下の通りです。
- Numpy
- SciPy
- pandas
- matplotlib
- scikit-learn
- Jupyter Notebook ← 開発環境の１つ

一気にインストールするには以下のコマンド。

```
(env_wk) $ pip install jupyter numpy scipy pandas matplotlib scikit-learn
```

# 5．開発環境について

## 5-1. IDLE
### 5-1-1. Windows8以降
- Win-Rを押下し、「ファイル名を指定して実行」を開いてIDLEで検索します。

### 5-1-2. Mac
- Finderを開き、Applicationの中の、Python X.Xの中のIDLEアイコンをダブルクリック。

## 5-2. Jupyter Notebook

コマンドラインで以下のコマンドを実行する。

``` 言語:インストール
(env_wk) $ pip install jupyter
```
``` 言語:起動
(env_wk) $ Jupyter Notebook
```
コマンドラインで、
仮想環境を有効化し、Jupyter Notebookを起動するのは面倒。
エクスプローラ(Fainder）にてアイコンダブルクリックで起動したい。

### 5-2-1. Windows

(1) power shellにて実現する

``` run_env.ps1
# 仮想環境を有効にする
. ".\Scripts\Activate.ps1"
# 起動
jupyter notebook
```

### 5-2-2. MAC

(1) 仮想環境の有効やJupyter Notebookの起動などのshを書きます。

``` run_env.sh
#!/bin/bash

cd /Users/oyan/Documents/python_work/env_wk
source bin/activate
Jupyter Notebook

または

cd `dirname $0`
source bin/activate
Jupyter Notebook
```

(2) 拡張子をcommandにします。

```
mv run_env.sh run_env.command
```

(3) 実行権限がないのでアクセス権を変更します。

```
chmod u+x run_env.command
```

(4) Finderからダブルクリックで実行されます。

(補足1) 
　カレントディレクトリをファイルのある場所にする方法
　.commandファイルを実行したときはカレントディレクトリがrootになっている。
　以下のコードを入れると、そのファイルがある場所がカレントディレクトリになる。

```
cd `dirname $0`
```

(補足2) 
　実行を途中で止める方法（Enterキー入力まち状態にする）

```
（ a はなんでも可）
read a
```

### 5-2-3. インテリセンスを使いたい

```
# インストール
pip install jupyter-contrib-nbextensions
pip install jupyter-nbextensions-configurator

# 有効化
jupyter contrib nbextension install --user
jupyter nbextensions_configurator enable --user

# 無効化
jupyter contrib nbextension uninstall --user
jupyter nbextensions_configurator disable --user

# アンインストール
pip uninstall jupyter-contrib-nbextensions
pip uninstall jupyter-nbextensions-configurator
```

1. インストール & 有効化してJupyter Notebookを再起動
2. Nbextentions タブが追加される
3. Nbextentions タブにて、コード補完に使う Hinterland を有効化

### 5-2-4. Jupyterの便利な機能
[Jupyter Nootbookの活用](https://qiita.com/oyan29/items/3796082283558943597b)

## 5-3. Visual Studio Code
### 5-3-1. Visual Studio Codeのインストール
https://qiita.com/oyan29/items/3a6a7bed9f5fdabdc05c
を参考にインストール。
さらに、
python extensionをインストールします。
拡張機能の検索で検索ボックスに"python"と入力して、
一番上にある公式のPython Extensionをインストールしてください。

### 5-3-2. 実行
Ctrl + Shift + P（同時押し）
Command + Shift + P（同時押し）
"コマンドパレット"が開くので"python select interpreter"を検索します。
どのインタープリタで実行するかを選択します。
VS Code上で実行したい「*****.py」上で右クリックして、
"ターミナルでPythonファイルを実行"をクリックします。
VS Code上でターミナルが開いて実行されれば成功です。

### 5-3-3. デバッグ
VS Code上でデバッグを選択し、構成が選択されていることを確認。
F5で実行。ソースコード上でブレークポイントを置くとブレークする。

### 5-3-4. VS Codeのプロジェクトを作成して保存しておくと良い
仮想環境フォルダの配下に（適当に）ソースファイルを配置するフォルダを作成し、
そのフォルダに自分が作ったソースをおくと管理しやすいかと思います。
そして、仮想環境フォルダの直下に、VS Codeのプロジェクトファイルを作っておくと、
IDEっぽく使えるので良いです。作り方は適当のネット検索すれば出来ると思います。

### 5-3-5. 仮想環境への対応
[参考サイト](https://qiita.com/some-nyan/items/7f20fa5fa0b6e451a42b)
を参考にさせてもらった。
以下に、やり方を本項に合わせて転記させて頂く。

#### 5-3-5-1. VS Codeへ設定（仮想環境管理用ディレクトリを基本設定に追加）
メニュー「Code」 → 「基本設定」 → 「設定」
の操作で、「設定」画面を開く。

「設定の検索」ボックスに「python.venvpath」と入力する。
→ Python: Venv Path という設定項目が出る。
設定値のボックスに仮想環境管理用ディレクトリのパスを入力する。
例：C:¥env_test¥

#### 5-3-5-2 VS CodeでPython実行環境選択
Python拡張をインストールしている状態で、
Pythonのプロジェクト（またはソースファイル単体）を開くと、
左下にPythonの実行環境が表示されます。
これをクリックすると作成した仮想環境が一覧に表示されます。
ここから仮想環境（例：env_wk）を選択。
すると、
.vscode/setting.jsonが自動生成され、
python.pythonPathに仮想環境のPythonが設定される。
ここまで実行すると、
デバッグ環境や補完などが仮想環境上で実行されるようになります。

# 6. 実行ファイルへ変換
Pythonで作成したプログラムを、実行形式へ変換する方法です。
Windowsなら「exeファイル」でお馴染みのアレです。

実行形式への変換のメリットは以下があります。

* 実行形式なのでダブルクリックするだけで処理が始まる
* Pythonを導入していない環境でも動作させることができる
* 配布がラクになる（実行形式を渡すだけ）

サポートしているバージョンについて知りたい場合は、
[Pyinstallerのリリースページ](https://github.com/pyinstaller/pyinstaller/releases)をご確認ください。

## 6-1. 変換方法
``` 言語:pyinstallerをまずはインストール
$ pip install pyinstaller
```

``` 言語:実行形式への変換
$ pyinstaller test.py
```
実行したディレクトリに複数のファイルが作成されます。
この中の"dist"配下に該当の実行形式のファイルが出力されています。

## 6-2. 1つの実行形式ファイルにまとめる方法
"dist"配下には実行形式ファイル以外にも様々なファイルがあります。
これは、実行形式ファイルを実行するのに必須なファイルです。
その為、作成された実行形式ファイルだけを別のディレクトリに移すと、
実行した際にエラーが発生してしまいます。

ここで対処法として、実行するのに必要なファイルをひとまとめにする"onefile"オプションを使います。

``` 言語:1つの実行形式ファイルにまとめる
$ pyinstaller test.py --onefile
```

このようにオプションをつけるだけで、dist配下に１つの実行形式ファイルだけとなっているかと思います。

# 7. コメント
以下の記事を参考。
[Pythonコーディング規約PEP8を読み解く](https://qiita.com/simonritchie/items/bb06a7521ae6560738a7)
[Pythonコードの書き方とスタイル規約の簡単理解 -ちょこっとPEP8](https://code-graffiti.com/easy-master-of-pep-8-in-python/)
[Pythonのドキュメントコメント(Docstrings)の書き方](https://qiita.com/oyan29/items/42c7ebbd98d02c1a2933)
[コメンティングのすゝめ](https://qiita.com/oyan29/items/f67ea95164aa9e195db0)