2016-02-02 154 views
0

我正在使用pyenv及其插件pyenv-virtualenv如何在pyenv-virtualenv上激活虛擬環境時導出PYTHONPATH?

我的問題是:如何在pyenv-virtualenv上激活一些虛擬環境時修改PYTHONPATH環境變量?

$ pyenv activate myenv 
$ echo $PYTHONPATH # I want this variable! 

當我用簡單的virtualenv,我可以通過編輯virtualenv_home/your_env/bin/activate

export OLD_PYTHONPATH=$PYTHONPATH 
export PYTHONPATH="/path/to/you/want" 

我應該修改哪些文件pyenv-的virtualenv修改PYTHONPATH?

回答

0

您只需按照常規設置PYTHONPATH,無論這是否在您的shell啓動腳本或其他地方。當您切換到一個帶有pyenv virtualenv的pyenv控制的virtualenv時,它會自動將此虛擬光碟的所有必要目錄附加到sys.path,但您在PYTHONPATH變量中定義的任何目錄都將在它們之前。

新增基礎上討論下面的評論:

您可以創建在$PYENV_HOME/pyenv.d/<command>/給定pyenv命令<command>鉤子腳本。您甚至可以爲pyenv的「瓷器」命令執行此操作,而這些命令通常不會由用戶直接調用。

應該可以創建用於activate一個鉤(其由pyenv-的virtualenv切換到的virtualenv時隱式調用),其解析的virtualenv的名稱,並基於其設定$PYTHONPATH

注意:我已經寫過pyenv鉤子,但沒有明確測試過這個解決方案。

+0

是的,它幾乎適用於所有情況,但在一些罕見的情況下,它不適用於我。假設我在virtualenv'env1'和'env2'中有名爲'mod'的模塊。在'env1'上,我想在'env1'和'env2'中使用'mod',我想在'env2'中使用'mod'。這是不可能的嗎? – keisuke

+0

你能弄清楚它不起作用的情況有什麼不同嗎?也許我們可以分開這個東西,弄清楚發生了什麼... – wjv

+0

迴應你編輯的評論: 是的,你可以在多個virtualenvs中安裝相同的模塊。你不需要做任何特別的事情;你不需要編輯$ PYTHONPATH。 – wjv

相關問題