我正在使用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钩子,但还没有明确测试过这个解决方案。