如何让Poetry成功切换到项目专属的虚拟环境(venv)
问题根因
你使用的Poetry 1.1.11版本默认开启了virtualenvs.prefer-active-python逻辑,优先级规则为:当前shell已激活的虚拟环境 > 手动通过poetry env use指定的虚拟环境。你在zshrc中设置了全局venv自动激活,所以Poetry始终优先识别这个全局环境,忽略你指定的项目级venv。
你看到的Skipping virtualenv creation, as specified in config file.提示是因为你全局配置里设置了virtualenvs.create=false,和本次虚拟环境不切换的问题无关。
解决方案
方案1:仅修改当前项目的Poetry配置(推荐)
不会影响其他项目的Poetry行为,执行以下命令即可:
- 进入项目目录后,先关闭当前项目的「优先使用已激活虚拟环境」逻辑:
poetry config --local virtualenvs.prefer-active-python false
- 清除Poetry已缓存的虚拟环境记录:
poetry env remove --all
- 重新指定项目级venv:
poetry env use venv/bin/python3.9
执行完成后运行poetry env info即可验证当前使用的虚拟环境路径是否为项目内的venv。
方案2:临时绕过全局venv配置
如果不想修改Poetry配置,可在每次执行Poetry命令前临时添加环境变量覆盖默认逻辑,示例:
POETRY_VIRTUALENVS_PREFER_ACTIVE_PYTHON=false poetry install
内容的提问来源于stack exchange,提问作者Haterind
相关产品推荐
相关产品推荐

