PyDevでpipenvを使う

2019-05-31

KDE neonを使おう

t f B! P L

pipenvのインストール


Pipenv & Virtual Environments — pipenv 2018.11.27.dev0 documentation

ドキュメントにはいくつかインストール方法が書いてあります。

bionic用のPPAはないようなので、pipでpipenvをインストールします。

KDE neonではpipはインストールされていないのでまずpipをインストールします。

muonでpython3-pipをインストールしました。


一緒にsetuptoolsとかwheelもインストールされました。

pip3 install --user pipenv

これでpipenvのインストール完了です。

インストール先は~/.local/lib/python3.6/site-packages/になりました。

Eclipseにpipenvの環境変数を渡す


pipenvはデフォルトでは3つ上のディレクトリまでPipfileを探しに行きます。

探しに行く上限はホームディレクトリまでです。

探しに行く途中でPipfileが見つかった時はそのPipfileを使ってそこで作成された仮想環境を起動します。

Eclipseのデフォルトworkspaceは~/eclipse-workspaceになっています。

なのでPyDevのプロジェクトフォルダからホームディレクトリまでは2階層しかなく、ホームディレクトリにPipfileがあった場合、PyDevプロジェクトフォルダのルートでpipenvを実行すると常にホームディレクトリのPipfileを使うことになってしまいます。

なので親ディレクトリにPipfileを探しに行かないようにします。

Pipenvの進んだ使い方 — pipenv 2018.11.27.dev0 ドキュメント

pipenvの設定変更は環境変数で行います。

pipenvを起動するシェルで設定したい環境変数を作成するとそれを読み込んでその設定を有効にしてくれます。

環境変数の存在だけをチェックするだけの設定はその値は何でもかまいません。

PyDevで仮想環境を作成するときに親ディレクトリのPipfileを探しに行かないようにするには環境変数PIPENV_NO_INHERITを作成します。


eclipseを起動するランチャのコマンドの前にPIPENV_NO_INHERIT=yes を入れました。

これでPyDevのコマンドで仮想環境を作成したときに親ディレクトリまでPipfileを探しにいかなくなりました。

StartExplorerから起動したシェルでもこの環境変数が引き継がれます。

unset PIPENV_NO_INHERIT

環境変数を無効にしたいときはそのシェルでこのコマンドを実行します。

PyDevのPython Interpreterを設定する


PyDevをインストールしただけではPython Interpreterは指定されていません。

一つもインタープリターが指定されていないとpipenvが使えないのでまずデフォルトインタープリターを設定します。

Eclipseのメニューから、Window ー> Preferences。

PyDev ー> Interpreters ー> Python Interpreter。


まずデフォルトインタープリターを指定しないとpipenvは使えませんので、Config first in PATHボタンをクリックします。


自動的にインタープリターが検索されて、KDE neonにデフォルトインストールされているPython 3.6のパスが指定されました。

ここでNew with Pipenvボタンをクリックしても、Pipfileの作成場所がないためにPyDevプロジェクトを先に作っておかないと仮想環境は作成できません。

プロジェクトのプロパティから仮想環境を作成する


PyDev Package Explorerでプロジェクトを右クリック ー> Properties。


PyDev-Interpreter/Grammar。

Click here to configure an interpreter not listed. をクリック。


Open interpreter preferences pageをクリックします。


New with Pipenvをクリック。


プロジェクトやpipenvへのパスは自動的に入力されていました。

Create Pipenv interpreterをクリック。


~/.local/share/virtualenvsフォルダ下にプロジェクト名から始まるフォルダ名の仮想環境が作成されます。

化け文字があるのはTerminalのフォントにRictyを指定しているからと理由だけで、pipenvとは関係ありません。

これで自動的にプロジェクトのインタープリターがこの新しく作成された仮想環境のインタープリターになるはずなのですが、どうもうまくいかないときが多いです(PyDev 7.2.1)。

仕方ないので自分でインタープリターを登録します。


Open interpreter preferencesでBrowse for python/pypy exeをクリック。

~/.local/share/virtualenvsにある仮想環境のインタープリターを指定します。

隠しファイルの表示はCtrl+hでできます。

すでに存在するインタープリターと同名のときは異なる名前を指定しないといけません。


インタープリター名は「プロジェクト名(pipenv)」にしました。

自動で名前が入力されるときもこの形式でした。

OK。



作成する仮想環境へのPYTHONPATHの確認ダイアログがでてくるのでOK。


pipenvで作成された環境のインタープリターが登録されました。

Apply and Close。


Interpreterにpipenvのものを指定します。


プロジェクト内にPipfileが作成されました。

仮想環境のbinフォルダへのパスも追加されています。

仮想環境にパッケージをインストールする



インストールしたい仮想環境のインタープリターを選択して下のPackageタグのManage with pipenvボタンをクリック。

仮想環境に関連付けてあるProjectの選択ダイアログがでてくるのでプロジェクトを選択します。

Confirm pipenv informationをクリックするとインストールダイアログがでてくるはずですが、次のエラーがでてきます。

Unable to get the target python env from the location

これはEclipseを再起動するとでてこなくなります。


install <package>の<package>をインストールしたいパッケージ名に置き換えてRunをクリック。

インストールが始まりますがpipでインストールするよりもかなり時間がかかる上にでてくる出力はinstallingとLockingしかありません。


numpyをインストールしてみました。

プロジェクト内にはPipfile.lockファイルができていました。

インストールパスは~/.local/share/virtualenvs/Proj1--CZcHdLUL/lib/python3.6/site-packages内になっていました。

仮想環境をPyDevのConsoleで開く


EclipseのWindow ー> Show View ー> Console。


Open ConsoleアイコンからPyDev Consoleを選択。


Python consoleを選択してOK。


pipenvで作成したインタープリターを指定。


これでインタープリターが起動しました。

pipenv shellで仮想環境を起動する


pipenv shell

PipfileがあるプロジェクトフォルダでKonsoleでこのコマンドを実行するとpipenvで作成した仮想環境が起動します。

仮想環境のpythonはコマンドpythonで起動できます。

仮想環境の削除


仮想環境は~/.local/share/virtualenvs以下のフォルダとして作成されています。

Eclipseのプロジェクトを削除しても仮想環境は削除されません。

EclipseのPreferencesのPyDevのInterpreterから仮想環境のインタープリターから削除しても、仮想環境は削除されません。

仮想環境の削除するには~/.local/share/virtualenvs内の仮想環境のフォルダを削除します。

削除したい仮想環境のPipfileファイルがあるディレクトリでpipenv --rmでも削除できます。

Pipfileファイルはそのまま残っています。

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ