Eshellでvirtualenvwrapperを使用する


7

eenvでvirtualenvwrapperコマンド(などworkon)を使用できないことに気付きましたが、それらはシェル環境内で機能します。Emacsにvirtualenvwrapperのようなモードはありますか?


virtualenvwrapper(melpaで)venv-workon環境を切り替えるコマンドを提供しますが、すべてのemacsセッションでも同様です。wikemacs.org/index.php/Python#See_alsoしかし、pyvenvはより完全に見えます。
Ehvince 2014年

回答:


4

virtualenvwrapper(melpaで)venv-workon環境を切り替えるコマンドを提供しますが、すべてのemacsセッションでも同様です。それはeshellで動作しますvenv-initialize-eshell

eshellのサポートは、envv-initialize-eshellを呼び出すことでオンになります。これを実行した後、起動する新しいeshellは正しいvirtualenvにあり、インストールされた実行可能ファイルなどにアクセスできます。このモードは、bash / zshの対応物と同様に機能するさまざまなvirtualenvwrapperコマンドも提供します(以下で詳細に説明します)。対話型シェルの動作とは対照的に、EshellはEmacsと環境を共有するため、一方をアクティブ化または非アクティブ化すると、もう一方も影響を受けることに注意してください。これには、変数eshell-modify-global-environmentをtrueに設定する必要があることに注意してください。venv-initialize-eshellを実行すると、これが発生します。これでうまくいかない場合は、問題を開いてください!技術的には2つを分離することは可能ですが、異なる名前空間をハッキングする必要があります。

eshellプロンプトの変更:

Eshellプロンプトのカスタマイズ

また、現在のvirtualenvの名前をeshellプロンプトに表示させることもできます。これは非常によく似たメカニズムで実行できます。venv-current-nameをeshell-prompt-functionのどこかに含めるだけです。次に、現在のvirtualenv名とそれに続くドル記号を含むプロンプトの簡単な例を示します。

(setq eshell-prompt-function(lambda()(concat venv-current-name "$"))))

これを行う場合は、eshell-prompt-regexpも調整してください。

EmacsWikiのeshellプロンプトのカスタマイズに関する詳細。

(e)シェルで動作し、自動アクティブ化があり、モードラインに表示されます。

それとpyvenvの違いを知りたいです。


2

pyvenvを使用すると、Emacs内からvirtualenvを使用できます。ただし、Emacsのいくつかの制限により、このパッケージはEmacsセッション全体を特定のvirtualenvに切り替えます。私の記憶が正しければ、1つのバッファだけをvirtualenvに切り替えることはできません。


私は通常、.dir-locals.elを使用してプロジェクトごとにpyvenvを切り替えます。pyvenvには、バッファーを切り替えるときに自動的に切り替えるトラッキング設定もあります。
エラソン2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.