これはVirtual Machine上のファイルをIDEで編集した際に悩んだ記録。
エラーがでた
仮想環境上でPostgreSQLにアクセスしようとPythonのコードを書いて実行した所、下記エラーが出た。
ModuleNotFoundError: No module named 'psycopg2'
こう書くと仮想環境上で作業をしていて出たエラーの様だが、実際は異なる。
エラーが出た当時実際行っていたのは、仮想環境上ではなく、Mac上で作業していた時の話だ。
エラー時の状況
仮想環境Virtual Box上のUbuntuの”/vagrant”フォルダ内にあるPythonのファイル(.pyのファイル)を編集、実行するにあたり、仮想環境上での開き方が分からなかったので、結局同じファイルだし、と仮想環境/vagrant内ではなく、Mac上にあるミラーの”vagrant”フォルダ上にある.pyファイルをPycharmで編集、実行していた。
その時の話になる。
早速対策
‘psycopg2’はPythonでDatabaseとやり取りをする為のモジュールの名前。
使う為にはインストールが必要。
とりあえずインストールするか、と気軽に考えてpipで入れるのかhomebrewで入れるのか調べていた所、ふと気になった。
入れるならどこ人れるのだろう?MacのPython3に入れたら良いのだろうか?それとも仮想環境?
もしかしたら仮想間環境の方に既に入っているのかも知れない。
というのも、この仮想環境はUdacityのサイトからダウンロードした、講義で使用する環境だったから。
試しに仮想環境上でPythonを立ち上げてから
>>> import psycopg2
と打ち込んだら、エラーが出ず、インポートできた様だ。 という事は、この仮想環境にはpsycopg2がインストールされていると考えて問題ないだろう。
こうなると、Mac上で”psycopg2″をインストールした所で意味がなさそう。
と、いうのもインストールしたとしても、今度は仮想環境上のデータベースにアクセスが出来ない気がするので。
(2019年11月9日時点の想像、未検証。)
方針転換
Mac上でデータベースを構築する予定は今の所は無いので、余分なものは入れたくない。
まずは仮想環境の.pyファイルを使用しているIDE、PyCharmで編集する為の方法を探す事にする。
ただコードをいじるだけならLinuxのエディタVimでもできるのは確かだが、仮想環境上Vimにpythonのエラーが分かるプラグインを入れて活用する程にはVimの使い方に習熟していない為に、実行しても上手く行っているか、何がエラーなのかわからない。 よって、できれば今の環境Pycharmで編集できるのが一番。
もちろん、将来的には仮想環境上のVimも柔軟に使えるようにしたい、というVim的目標もあるが、今は横に置いておく。
そんな訳で調べた所Pycharm、フリー版では仮想環境に対応していない事になっている。
今後Webアプリなど作っていきたい所なので、この機会にProfessionalを入れる事にする。
支払うにあたって金額を調べてみたら、今年3月頃から日本で買う分には日本円しか対応していないらしい。1USD=115円程のレート。
割高だな、と思ったが、日本円縛りと言う事、ほぼ消費税分割高な事から考え合わせると、消費税加算額としているのかもしれない。
インターネット等を通した役務の提供に係る消費税の改正概要
しょうがない、払うからちゃんと納税して頂戴よJetBrainsさん。
という事で、早速Pycharm Proにした。
Pycharm Proの設定
PycharmのPreferences>Project interpreterから Interpreter listの一番下に並んだアイコンの左「+」Add python interpreterを選択。
そこに上図の通り「Vagrant」が出てくるので、 選択した上で、Vagrant Instance Foldeに[Vagrant]のMacのフォルダを選ぶ。
すると、Vagrant Host URL:の箇所にそれっぽいURLが青字で出てきた。 これは大丈夫そう。
OKを押すと、Project InterpreterのリストにVagrantのものが出てきた。 Python2.7なのが少し気になるが、そのまま進める。
Preferencesを終了。
改めてPycharmのチュートリアルを見る。と、ほとんど自分がやった事が出てきた。
Vagrantを使ってリモートインタープリターを設定する
安心すると同時に最初から見ろよ自分と軽く突っ込む。
設定は完了したけれど
さて、どうすれば開けるのだろうか。。。
これは勘違い
最後に書かれいた通りパスマッピングを見ると、見慣れない /vagrant→/vagrant という表示が。
これかな?と、これをpathに打ち込んでも動かない。
うん、これは違いました。
仮想環境上のファイルの編集方法
色々調べたら、まずはMac側のVagrantフォルダを選択した上で、PycharmのProject Interpreterを変更する事で完了した。
最初に選ぶのはやはり”vagrant”フォルダ上のファイル。
その上で、Pycharm画面の右下、”Project Interpreter”でMac上の”vagrant”フォルダのPythonファイルと、先ほど登録した仮想環境上の”/vagrant”フォルダのPythonファイルを切り替える事で、仮想と現実を行き来出来る。
仮想と現実の移動方法
実行するのは同じPythonファイル
同ファイルの実行だが、Mac上のPython3.7をProject Interpreterとして実行すると
ModuleNotFoundError: No module named ‘psycopg2'
と、エラーが出る。
しかし、”Remote Python 2.7.12 Vagrant VM at ~…”をPoject Interpreterとして選択して実行すると、エラーが出ず実行できる。
モジュールのインストールも環境ごとに反映される。
知っている人には当然だが、自分にとっては昨日よりも環境の事がわかった一日だった。
ちなみに、仮想環境を終了した後でも、Pycharmでその仮想環境を指定して実行できました。 一度やったら覚えているという事だろうか。 ここは未検証。
今回もネット上に情報を提供してくださっている皆様感謝。
一通りの処理を見る最初の一冊として、コスト等考えるとお勧めの一冊。
最初はコマンドの説明が並ぶだけなので中だるみしがちですが、第9章のシェルスクリプト辺りから結構面白い所も。
ちなみに、PDFやEPUB版は無償だそうです。
自分はKindleにまとめたかった事もあり、こちらを購入しましたが、リファラー版でハイライトも引ける(PDF版も引けます。EPUB版は不明。)し、使い勝手は良いので満足しています。
コメント