【Windows】Blender 2.79用PythonスクリプトをPyCharmで扱うためのセットアップ備忘録
※PyCharmからbpyのコードを書けるようになるというだけなので,あくまで実行時はBlenderから呼び出すことになる。方法は後述。
手順はUsing external IDE PyCharm for writing Blender scriptsを基にしています。
【手順】
2. PyCharmのインストール
PyCharm Community Editionを公式サイトからDLし,インストールする。
3. PyCharmが参照するPythonの設定
Blenderをインストールした際に内蔵されているPythonインタプリタをPyCharm側が参照するように設定する。
(パッケージ管理などの簡略化のためこの方法をとっているが,参考サイトではBlender内蔵のものとは別に同バージョンのPythonインタプリタを用意していた。
別で用意した方がベターな理由などあればコメント欄で指摘をお願いします。)
→"Project Interpreter: "のプルダウンバーの右の歯車をクリック -> "Add Local..."
→Virtualenv Environmentのラジオボタンで"Existing environment"を選択し,"Interpreter:"の右ボタンからBlender内蔵Pythonを選択
(内蔵Pythonの場所は,Blender 2.79のデフォルト状態では"C:\Program Files\Blender Foundation\Blender\2.79\python\bin\python.exe")
割り当てが完了するとPython環境に導入されているパッケージが表示されるが,Blender内蔵のPythonにはパッケージおよびパッケージングツールが入っていない。
PyCharm上でも画面下部にその旨が表示されているので,"Install packaging tools"をクリックするとpipとsetuptoolsが導入される。
導入が確認できたらOKを押して設定を保存する。
4. PyCharm側からBlender APIのオートコンプリートができるようにする
PyCharm側からBlender APIのオートコンプリートができるようにする。
オートコンプリート用の記述ファイルをBlenderから抜き出すために,pycharm-blender -> python_apiフォルダにあるpredef_gen.pyを用いる。
- pypredef_gen.pyを保存し,適当な場所(今回は仮に"D:\")に置く。
(githubから単体ファイルを保存するにあたり,筆者はgithubの該当ファイルページで"Raw"をクリックしCtrl+Sでページを保存した。)
- cmdファイル(今回は仮に"ppd.cmd")を作る。
cmdファイルの配置場所はpypredef_gen.pyと異なっても構わない。
- テキストエディタを用い,ppd.cmdに以下のように記述する。このとき,記述内の「ブレンダーのパス」部はBlenderのインストール先フォルダを指すように書き換えること。
"ブレンダーのパス\Blender.exe" -b -P "D:\pypredef_gen.py"
- 本来であればここでppd.cmdを実行すれば無事オートコンプリート用記述ファイルが出力されるが,Windows環境ではUnicodeEncodeErrorを吐いて実行が中断されてしまうためコードを修正する。
(Windows) Python3でのUnicodeEncodeErrorの原因と回避方法を参考にし,pypredef_gen.pyの170~172行目のfn(ident + l.strip() + "\n") else: fn(ident + l + "\n")
を
fn((ident + l.strip() + "\n").encode("cp932","ignore").decode("cp932")) else: fn((ident + l + "\n").encode("cp932","ignore").decode("cp932"))
に書き換えて保存する。
- ppd.cmdを実行する。
- 処理が終わると,pypredef_gen.pyのあるディレクトリにpypredefフォルダが出来,その中にオートコンプリート用記述ファイルが生成されている。
- ここからはPyCharm側の操作。
PyCharmのメニューバー -> File -> Settings -> Project Interpreterへ
→"Project Interpreter: "のプルダウンバーの右の歯車をクリック -> 今回は"Show All..."へ
→Project Interpretersの一覧が現れる。右に+やーのボタンがあるが,そのうち一番下の接続ハブのような絵柄のアイコンをクリック
→Interpreter Pathsの一覧が現れる。"+"ボタンを押し,pypredefフォルダを一覧に追加する。
- OKを押して設定を保存する。
5. 完成?
実行はあくまでBlender上で
以上の手順をもって,PyCharmからでもimport bpyしてBlender APIを扱うコードを書けるようになった。
ただし,可能になったのはコードのオートコンプリートのみであり,PyCharmのコンソールでBlenderのコードを実行できるようになった訳ではない。
以下のコードをBlenderのConsoleに入力,またはBlenderのText editorに記述してRunすることで実際にスクリプトを実行できる。ただし,「パス」部および「ファイル名」部はスクリプトファイルを正しく指すよう書き換えること。
import bpy import os filename = os.path.join("パス", "ファイル名.py") exec(compile(open(filename).read(), filename, 'exec'))
【参考サイト】
Using external IDE PyCharm for writing Blender scripts
https://b3d.interplanety.org/en/using-external-ide-pycharm-for-writing-blender-scripts/
pycharm-blender
https://github.com/mutantbob/pycharm-blender
(Windows) Python3でのUnicodeEncodeErrorの原因と回避方法
https://qiita.com/butada/items/33db39ced989c2ebf644