日々精進

新しく学んだことを書き留めていきます

PyCharmのSSH InterpreterのFile Transfer機能が正しく動かない問題

PyCharmのSSH Interpreterは手元のPCでコードを書いて、実行はリモートのEC2インスタンスなどで実行できる、しかも実行前に自動的にコードをアップロードしてくれる という大変便利な機能だけど、その実行前にコードをアップロードする機能が頻繁に動かなくなる。。

その対策として、コードを実行する前にrsyncを実行してファイルをアップロードするようにした。手順は以下。

  • 管理者権限で以下を実行する。
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
choco install rsync
  • PyCharm上で以下を設定。
rsyncのインストール直後且つ、Pycharm起動中の場合は、Pycharmを再起動する

Run -> Edit Configurations... を選択

Python -> rsync対象の実行設定(例:flask_server)を選択

画面の一番下の「+」ボタン(Before launch: Activate tool windowの下)をクリックし、「Run External tool」を選択

「External Tools」画面で「+」ボタンをクリックする(追加済みの「External Tool」を修正したい場合は、Editボタンをクリックする)

「Create Tool」(修正の場合は、「Edit Tool」)画面で各項目を入力して、「OK」ボタンを選択

Create Toolウィンドウでの各項目の入力例は以下。

Name : rsync_sample_service

Description : rsync_sample_service

Program : C:\ProgramData\chocolatey\bin\rsync

Arguments :--chmod=F644,D775 --delete -avu -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 3111" ./ dp-user@127.0.0.1:/home/ec2-user/myproject

Working directory : C:\myproject