当我在pyenv-virtualenv上激活虚拟环境时如何导出PYTHONPATH?

时间:2016-02-02 13:13:42

标签: python virtualenv pyenv

我正在使用pyenv及其插件pyenv-virtualenv

我的问题是:当我在pyenv-virtualenv上激活一些虚拟环境时,如何修改PYTHONPATH环境变量?

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

当我使用简单的virtualenv时,我可以通过编辑virtualenv_home/your_env/bin/activate修改PYTHONPATH

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

我应该为pyenv-virtualenv编辑哪个文件?

1 个答案:

答案 0 :(得分:0)

您只需按正常方式设置PYTHONPATH,无论是在您的shell启动脚本还是其他位置。当您使用pyenv virtualenv切换到pyenv控制的virtualenv时,它会自动将此virtualenv的所有必要目录附加到sys.path,但您在PYTHONPATH变量中定义的任何目录都将在它们之前

根据以下评论中的讨论添加:

您可以在<command>中为给定的pyenv命令$PYENV_HOME/pyenv.d/<command>/创建钩子脚本。您甚至可以为pyenv的“瓷器”命令执行此操作,这些命令通常不会由用户直接调用。

应该可以为activate创建一个钩子(当切换到virtualenv时由pyenv-virtualenv隐式调用),该钩子解析virtualenv的名称并基于此设置$PYTHONPATH

注意:我之前写过pyenv钩子,但没有明确测试过这个解决方案。