虚拟环境中不同的$PATH



我在Mac上只使用终端。

运行echo $PATH返回

/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/.cargo/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/username/Venvs/default/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/username/.nvm/versions/node/v17.4.0/bin:usr/local/bin:/Users/username/.cargo/bin

激活venv后,echo $PATH只返回

/Users/username/Venvs/default/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/username/.nvm/versions/node/v17.4.0/bin:/usr/bin:/bin:/usr/sbin:/sbin

我如何设置即/Users/username/.cargo/bin是由所有venvs默认加载?(现在设置在。zshrc中)

我找不到任何关于虚拟环境如何设置$PATH以及为什么设置的文档。我甚至不知道大多数条目是从哪里来的。

这是一个相关的问题,但并没有解决为什么当我一直在终端时情况会发生:使用venv

时,环境$PATH不同我试着用所有这些地方添加PATH,没有区别:

/etc/bashrc
/etc/profile
~/.bashrc
~/.bash_profile
~/.profile
~/.MacOSX/environment.plist
~/.zshrc
~/.zprofile

虚拟环境的全部意义在于配置您的shell以使用特定的Python安装。

虽然细节可能取决于用于创建虚拟环境的工具,但通常有一个shell脚本activate,它将显式地将虚拟环境的bin目录添加到PATH中。(它还保存了旧的路径,并定义了一个shell函数deactivate,它将PATH恢复到以前的值。)

使$PATH不同的唯一方法似乎是激活虚拟环境并然后将附加到其中。

我使用defaultvenv,我在.zshrc中设置,但我也在.zshenv中设置它,这是首先加载的。从.zshenv中删除venv激活解决了这个问题。

因此,如果您的$PATH在不同的venvs之间存在差异,请确保激活和追加的顺序是正确的。

相关内容

  • 没有找到相关文章

最新更新