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



我正在使用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 编辑哪个文件?

您只需按照

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

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

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

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

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

最新更新