eclipseでPythonの仮想環境を使いたい

【設定方法】
1.事前にcondaコマンドやvenvなどで仮想環境を作成しておく(一つ目の肝)
2.[ウインドウ] - [設定] - [PyDev] - [インタープリター] - [Python インタープリター]を選択
3.Browse for python/pypy exeを選択

f:id:yoneyore:20200731190639j:plain
このボタン押下すると急にディレクト選択画面が出現するので注意

4.パスを選択迫られるので、ここで1.で作成した仮想環境配下にあるpython.exeを選択
5.インタープリター名を任意の名前(自分の仮想環境に付けた名前がベスト)に書き換え、OKボタンを押下
6.適用して閉じるボタンを押下

【利用方法】
[Djangoの開発を行いたい場合]
1.Pydevパッケージエクスプローラで右クリックをし、[新規] - [プロジェクト]を選択
2.[PyDev] - [PyDev Django プロジェクト]を選択
3.プロジェクト名を設定し、インタープリターの箇所を先ほど設定したものを設定(二つ目の肝)し、次へボタンを押下する。(他は基本そのままでOKとしてよい)
4.参照ページは分からなければそのままにし、次へボタンを押下する。
5.Django Settingsも分からなければそのままにし、完了ボタンを押下する。

【仮想環境利用方法】
別のコンソールで操作する(三つめの肝)
もう少し正確に書くと、eclipseの設定でどうのこうのするという頭ではなく、condaやpipコマンドで操作する事になるを把握しておけば良い。
そのため、eclipseに何か設定を入れるのではなく、condaやvenvなどを操作するためのコンソールが必要になる。
今風であれば一つのIDEに統一できた方が嬉しいはずなので、eclipseでAnacondaな環境の操作する事を説明する。
1.[ウインドウ] - [ビューの表示] - [コンソール] を選択する。
2.コンソールを開くアイコンをクリックし、3.Command Shell Consoleを選択する。
f:id:yoneyore:20200731205347p:plain
3.接続タイプをlocal、接続名をローカル、エンコードUTF-8を選択し、OKボタンを押下する。
f:id:yoneyore:20200731205435p:plain
4.condaコマンドを実行してあれこれする(※1)

※1
事前にPATHを通しておく必要がある。
なお、Anacondaをインストールする際に通してなかった場合は、以下のパスを通しておけば良いと思われる。(※2)

C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Library\mingw-w64\bin
C:\ProgramData\Anaconda3\Library\usr\bin
C:\ProgramData\Anaconda3\Library\bin
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\bin
C:\ProgramData\Anaconda3\condabin
(C:\ProgramData\Anaconda3までのパスは適宜読み替えて下さい)

なお、eclipse 2020-06では残念な事に、日本語がもれなく酷い表示のされかたをしてしまう。。
f:id:yoneyore:20200731212217p:plain

※2
Anacondaプロンプトでecho %PATH%した内容と、通常のコマンドプロンプトでecho %PATH%した内容の差異から導出した。

Java屋からみたPythonの仮想環境に関する理解促進方法】
仮想環境に対してpipコマンドで仮想環境に対してモジュールをインストールしたり、activateという概念をIDEを用いて開発する時にどうやって操作するのか?というのがずっと理解に苦しんでいた。
しかし、仮想環境は、例えばconda activate!って詠唱したコンソールのみ有効に働き、そのコンソール以外では仮想環境は全くシステムに作用しないことが最近ようやく理解できた。(※3)
また、IDEの設定で何かするのではなく、別途コンソールで操作する必要があるという発想をなかなか持てなかったのも理解疎外原因であった。
結果、以下の様に置き換えて理解すれば良いのかと考える。

  • 仮想環境の構築(ex. conda create):JDKをOSにインストールする感じ(Corretto8をインストールするのか、OpenJDK15をインストールするのか)
  • 仮想環境の切り替え(ex. conda activate):操作するJDKを選ぶ感じ(Corretto8に対して操作するのか、OpenJDK15に対して操作をするのか)
  • モジュールのインストール(ex. conda install):操作するJDKのパスにjarを配置する感じ
  • 仮想環境を使わない場合は、OSでデフォルトでインストールされているJDKをそのまま利用する感じ

Java屋は、基本TomcatなどのAPサーバーの起動スクリプト内のシェル変数などでJAVA_HOMEの指定を行う事でどのJDKを利用するかを選択するのが一般的かと思われる。
そのため、私は仮想環境という内容が長年分かっている様で理解できていなかった。
(一番の理解の重しになっていたのは、create/activateという部分が何をして、どこまで作用するのかを正しく理解できていなかったからと自己分析)

※3
というより、Jupyter NotebookやColaboratoryでほにゃらら動かしたいだけだったので、仮想環境使う場面に直面しなかったからわざわざ理解せんでええかーと思ってた。

【Tips】
Java屋がPythonを使いたい場合は、面倒だけどワークスペースはいちいち切り替えた方がいいかもしれない。(別途workspace_pythonみたいなのを用意して)
 ただ、JavaしながらPython動かしたい場合はその限りではないが。
・仮想環境の場所と、ワークスペースの位置は一緒にしなくてもいいかもしれない。
 いろんなサンプルでは仮想環境配下にワークスペースを置くのを見かけるが、別のとこ置いていても特に問題なく動いているっぽい。
・Spyder試したけど、なんか補完いけてないし、vimキーマップ使えないので使うのやめた。Pycharm無料版いけてなさそうなので使う事すらしなかった。VSCode何故か自身の環境ではeclipseよりもさく動くので使わんことにした。なんやかんやでメモリとCPUが潤沢にあるPCでは、まだまだeclipse強々かと思った。なお、eclipse cheはまだ人類には早い気がする。。

【その他】
java屋さんな頭の理解なので、Pythonistからすれば、「この人恥ずかしい…」という事書いてある可能性あるかも。。。
とはいえ、今のところ想定通りな動きはしていそう。

【参考リンク】
下の方にconda/venv/virtualenvのコマンド比較表があって便利でした
blog.codecamp.jp

パーフェクト Python [改訂2版] (PERFECT SERIES 5)

パーフェクト Python [改訂2版] (PERFECT SERIES 5)