Pycharmで自動的にvirtualenvにactivateした状態のTerminalを起動したい(Windows)

なんかすごいルー語みたいなタイトルになってしまいました.

プロジェクトで使用するPythonを変えたい場合,Pycharmだと[Preferences > Project:your_projcet_name > Project Interpreter]から変更することが多いです.しかし,この設定だとGUI上の操作では指定したPythonが使用されますが,Terminal上でPythonコマンドを使用した際に他のものが呼び出されてしまいます.

いちいちTerminalを開く度にactivete状態にするのもつらいのでそれを解消するため設定です.

環境

  • Windows10 64bit
  • PyCharm 2016.2.3

設定

まず[File > Settings]を選びましょう.

そこから[Tools > Terminal]を選択し,Shell Pathの部分に"cmd.exe" /k ""<path-to-your-activate.bat>""と書くことでTerminal起動時にactivateされます.

例)"cmd.exe" /k ""C:\Users\hogehoge\Envs\testenv\Scripts\activate.bat""

cmd.exe/kをつけることでその後指定した内容を実行し,cmdを終了せずに引き続き表示させることが出来ます.今回はここにvirtualenv下にあるactivateするbatファイル(activate.bat)を実行するように指定しています.(activete.batは元から存在しています.)

これを設定することでTerminalを起動した瞬間にactivate.batが実行され,自動的に指定したvirtualenvにactivateされます.

余談ですが昔のバージョンだとcmd.exe /k "C:\Users\hogehoge\Envs\testenv\Scripts\activate.bat"で出来たそうです.しかし,どっかのタイミングからダブルコーテーションで括る必要が出たそうです(ちょっと検索すると括る必要がない時の情報ばっかり出てくる).ですがその辺りの詳しい話は自分はわからないので書けません.

参考サイト: https://github.com/cmderdev/cmder/issues/282#issuecomment-219684282

追記(2017-03-25)

この方法だと確かに自動でactivateしますが,Pycharmのterminal起動コマンドが全プロジェクト共通のため,プロジェクト変更ごとにいちいち設定しなおさなれければいけませんでした.

代わりの方法としてbash on windows上にpyenv-virtualenvをインストールしてそれを利用し,terminal起動コマンドにbashを用いれば各プロジェクトのディレクトリ下に入った瞬間にactivateされます.

しかしこれはこれでbash on windowsの起動速度の都合上terminalを立ち上げると毎回ちょっと遅い等の難点があります