IntelliJ IDEA / PyCharm + RaspberryPiでリモート開発・デバッグ
Raspberry Pi上で動作させるPythonプログラムを作る際に、PC上のIntelliJ IDEA or PyCharmで開発しているが、実行・動作確認はRaspberryPi上で行いたい場合があったのでその方法のメモ。このメモはWindows上で設定したが、先にLinuxでも試してうまく行った。
PC上で開発し、そのまま実行すればRaspberryPi上で実行されるし、ブレークポイントも張れるし超便利。
必要なもの
- IntelliJ IDEA / PyCharmの有料版 Deployment機能を使うことにしたため有料版が必要になる。ちょうど半額セールのときに買ったので活用してみることにした。
- 開発環境が構築され、SSH接続ができるように設定されたRaspberry Pi
設定
Deploymentの設定
メニューのTool -> Deployment -> Configurationを選択する。
左上の+ボタンを押してリモート環境(ここではRaspberryPi)を追加する。とりあえずNameはRaspberryPi、TypeはSFTPに指定しておく。
リモート環境が追加されるので各設定項目を埋めていく。必要であればMappingでローカルとリモートのディレクトリ対応を定義しておく。
リモートのPython環境の指定
File -> ProjectStructureを開き、Platform Settings -> SDKを選択する。
左上の+ボタンを押してPython SDKを追加する。ここでリモートの環境を指定するためにSSH Interpreterを選択する。
Existing server configurationで先ほど作成したRaspberryPi
の環境をDeployment configurationに指定する。(そのままだとできないのでMove this server to IDE settingを選択した)
次の画面でPython Interpreterを指定する。virtualenvのPython環境を指定してもうまく行った。他の設定項目1はそのまま。 これでリモートのPython環境が追加できた。 File -> ProectStructureを開き、ProjectSettings -> ProjectのProject SDKで今作成したRemote Python環境を指定すれば、IDEA / PyCharmでプログラムを実行したときにRaspberry Pi上で実行される。AutoSyncも有効になっていれば(デフォルトで有効)作業内容が自動的にRaspberry Piにアップロードされる。
試しにプログラムを実行(IDEA / PyCharmの再生ボタン押下)してみるとRaspberryPi上でプログラムが実行されていることがわかる。
PC画面上のエラーの解決
Raspberry Pi上での環境構築が正しくされていれば上記実行はうまくいくはずだが、PC上のIntelliJ IDEA / PyCharmではUnresolved Referenceのエラーが出ている。
ちゃんとした解決方法はよくわからないが、File -> ProjectStructureのPlatform Settings -> SDKsを開いて、とりあえずローカルのinterpreterの設定のclasspathを持ってきてリモートのinterpreterのclasspathにそのまま設定してやる。
参考までに、コピーしたのは以下の項目
- C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/DLLs
- C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/Lib
- C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64
- C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/Lib/site-packages
- C:/Users/abc08/.IdeaIC2017.2/system/python_stubs/907059903
参考
以下を参考にしました。
- http://kouzu.info/raspberrypi-dev-on-intellij-idea/
- https://blog.jetbrains.com/jp/2014/02/04/390
- https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000120270-Using-a-virtual-environment-on-a-remote-machine
- https://blog.jetbrains.com/pycharm/2018/04/running-flask-with-an-ssh-remote-python-interpreter/