我在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
不同的唯一方法似乎是激活虚拟环境并然后将附加到其中。
我使用default
venv,我在.zshrc
中设置,但我也在.zshenv
中设置它,这是首先加载的。从.zshenv
中删除venv激活解决了这个问题。
因此,如果您的$PATH
在不同的venvs之间存在差异,请确保激活和追加的顺序是正确的。