pipenvで作った環境でPycharmのコード補完がされなかったの対処法
はじめに
pipenv
でPythonの仮想環境を作った際に、実行時にエラーは起きないがIDE上でライブラリのインポート時にコード補完が効かない状態になりました。その時に調べたことのまとめです。
結論
- PycharmのSDK設定から仮想環境を作ればOK
-
pipenv
を使い手動で仮想環境を作った時はPycharmへインポートする
経緯
pipenv
を使い手動で仮想環境を作った時はPycharmへインポートするPythonでプロジェクトを作るのがとても久しぶりだったので、モダンな環境構築の方法を調べたところ、pipenv
を使って仮想環境を作るのが良さそうでした。
なので、まずプロジェクトのルートディレクトリでpipenv --python 3
を実行し、仮想環境を作りました。
その後、pipenv install 〇〇
として依存ライブラリをインストールしました。
この状態で、Pycharmのエディタを開くと、import文のコード補完がされませんでした。よく見ると、上の方に「プロジェクトのSDKが設定されていません」というようなエラーが出ていました。なるほど、先ほど作った仮想環境が見えていないんだが、と思いエディタに促されるまま、雰囲気で設定を行うと、プロジェクトのルートに.venv
ディレクトリが作成されました。よし、これで行けるはず!と思ったのですが相変わらずimport文の補完が効きませんでした。キャッシュの削除や再起動をしてもだめです。
そこでふとライブラリが本当にインストールされているのか気になり、.venv
の中のsite-packages
を確認しみると、インストールしたはずのパッケージが見当たりませんでした。しかし、Pythonスクリプト自体の実行はうまくいくので、恐らくIDEの設定がおかしいのだと思い、調査をはじめました。
原因
まず最初はpipenv
が何者なのかほとんどわかっていなかったので、これを調べることからはじめたのですが、pipenv
は先ほどから述べている通り、Pythonの仮想環境を作るためのツールです。pipenv
で仮想環境を作ると、ディレクトリが作成され、その中にPC上のPythonへのシムリンクが作られます。依存ライブラリはそのディレクトリの中にインストールされ、仮想環境外へ影響が出ないようにしてくれます。
で、このディレクトリなのですが、調べていくとpipenvを実行した場所に作成される訳ではないということがわかりました。pipenv --venv
とすると仮想環境のパスが表示されるのですが、自分の場合は/Users/<username>/.local/share/virtualenvs/xxxxxx
というようなパスになっていました。
プロジェクトのルートディレクトリに作られた.venv
とまったく別物です。つまり、pipenv
で作った仮想環境と、Pycharmが見ている仮想環境が違ったからコード補完がされなかったということです。なので、Pycharmの設定でpipenv
で作った仮想環境を読み込むように設定すればOKです。
具体的な手順は以下の通りです。
Platform Settings → SDK → 「+」ボタンからAdd Python SDK... を選択。
Existing environmentをチェックし、Interpreterに仮想環境上のPythonのパスを入力。
以上でPycharm上でコード補完が効くようになりました!しかし、仮想環境がプロジェクト外に出るのはちょっと気持ち悪い気もします。そんな時は、仮想環境を作るときにPIPENV_VENV_IN_PROJECT=1
という環境変数をセットすると、現在のディレクトリに仮想環境が作成されるので、そのパスをPycharmに読み込ませればOKです。
または、手動でpipenv --python 3
とするのをやめて、Pycharmを使って仮想環境を作る方法があります。というか、こちらの方がおすすめです。手順は以下の通りです。
まず、今ある仮想環境を削除します。
pipenv --rm
そして、先ほどのSDK追加のウィンドウで、New environmentにチェックを入れ、<プロジェクトのパス>/.venv
というパスを入力します。
これでプロジェクト以下にPythonの仮想環境が作成され、Pycharmにも読み込まれた状態になります!また、Pycharm上のターミナルは、自動で仮想環境にログインした状態で立ち上がるようになります。
実は、このPycharmで仮想環境を作る作業、最初に雰囲気でSDK設定していた時にやっていたのですが、どうやら最初に手動で作った仮想環境が優先されるようで、後からPycharmで作った仮想環境にはライブラリがインストールされませんでした。そのせいですごくハマりました...。
なので、既に手動で仮想環境を作ってしまった時は、今ある仮想環境を削除してから作業するのを忘れずに!
Author And Source
この問題について(pipenvで作った環境でPycharmのコード補完がされなかったの対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/ggg-mzkr/items/bebd6fb11709e6af48ac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .