Blender内蔵Pythonを環境構築する

　BlenderにはPythonが内蔵されていて、色々なスクリプトを行うことができます。ただし、導入されているモジュールは`numpy`等に限られており、好きなモジュールを追加するには少し作業が必要なので解説します。

# Windowsの場合

　デフォルトの設定の場合、Blenderは以下の場所に保存されているはずです。

```
C:\Program Files\Blender Foundation\Blender\2.80
```

　この下のPythonが内蔵されています。（自分で個別にインストールしたPythonとはまた別です）

```
C:\Program Files\Blender Foundation\Blender\2.80\Python\python.exe
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/8bd2bb73-83ba-50c9-a627-321eeabbf793.png)

　また、以下の場所に`pip.exe`（インストールするためのモジュール）があります。

```
C:\Program Files\Blender Foundation\Blender\2.80\python\Scripts
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/67b9410e-4535-bc5d-782e-eefddcb1520a.png)

　**！バージョンは2.81だったり2.80だったりするので、そこは各自合わせてください**

　この`pip`にはパスが通っていない（この`pip`を参照するようになっていない）ので、コマンドプロンプトで例えば、

```
pip install pandas
```

　と打っても通りません。（別のPythonがインストールされている場合、そちらの方にインストールされます）

　パスが通っていないなら場所を直接参照すればよいだけの話で、

```
C:\Program Files\Blender Foundation\Blender\2.80\python\Scripts\pip install pandas
```

　とやればOK……とはならず、実はもう一手間必要で、これだとWindowsの管理者権限の関係でうまくいきません。

```
C:\Program Files\Blender Foundation\Blender\2.80\python\Scripts\pip install pandas --user
```

　これでうまくいきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/202c714d-5e58-5f83-897f-5842f865e2c1.png)

　注意事項として、ワーキングディレクトリは

```Python
>>> import os
>>> os.getcwd()
'C:\\Program Files\\Blender Foundation\\Blender'
```

　になるので、なにかファイルを生成してそれを参照する、という操作を行う場合は管理者権限がないとエラーになります。管理者権限でBlenderを起動するか、ユーザーディレクトリ以下にファイルを生成・参照するようにしましょう。

# Macの場合

　Macの場合、Blenderは以下の場所に保存されているはずです。

```
/Applications/Blender.app/Contents/Resources/2.81
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/a800952d-41e3-060e-3f7b-4f57ed1f432d.png)

　**！バージョンは2.81だったり2.80だったりするので、そこは各自合わせてください**

　ただ、なぜかpipがインストールされていません。pipをインストールする必要があります。

　ターミナルを開いて、

```
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
/Applications/blender.app/Contents/Resources/2.81/python/bin/python3.7m get-pip.py
```

　**！pythonのバージョンは3.7だったり3.5だったりするので、そこは各自合わせてください**

　で、`pip`が生成されるはずです。

　後は同じように、

```
/Applications/blender.app/Contents/Resources/2.81/python/bin/pip install pandas
```

　でインストール完了。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/9de929f0-04d3-f73f-6e0d-c8a8856e5ddd.png)

# _tkinterの罠

　ちなみに、Windowsで`pyplot`をインポートしようとすると以下のようなエラーが出ます。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/03d4712b-6fe5-e086-d9d5-8fc5a1f36395.png)

　`_tkinter`がないと言われます。直前にインポートしている`tkinter/__init__.py`の中身を見ると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/1ed7f178-1fef-b64a-900f-40ba71d59d51.png)

「もしこれがfailする場合、あなたのPythonはTk用に調整されていないかもしれません」

　個別にインストールする普通の（？）Pythonだとこれが出ないので、内蔵Python特有の問題かもしれません。

　一応、力技として`C:\Program Files\Blender Foundation\Blender\2.80\`の下に別にインストールしたpythonを**フォルダごとコピーする**というものがあります（元々存在していたpythonフォルダはリネームして避難）。これだと環境をそのまま持っていけます。ただ、`pyplot.show()`でグラフを描画することはできませんでした。この方法は、内蔵Pythonではどうしてもモジュールを`pip`できない場合などは有効かもしれません。

　MacOSの場合、このエラーは出ませんが、やはりpyplot.show()で描画することはできませんでした。

　Blender上でグラフを描画するのは難しそうです（その必要性はあまりなさそうですが）。