VSCode选定pipenv创建的Python解释器,实际用pipenv还是venv环境?
问题解答
环境类型确认
你当前使用的是pipenv管理的虚拟环境,无需怀疑归属。
pipenv本身没有自研虚拟环境运行时,底层默认调用venv(Python 3.3+原生虚拟环境工具)或virtualenv创建虚拟环境,只是在基础虚拟环境之上封装了依赖版本管控、Pipfile自动同步等能力,所以你在环境属性里看到venv相关标识属于底层实现的正常现象。
可以通过以下命令验证环境归属:
- 执行
pip --version,输出的pip路径如果包含带随机哈希的pipenv专属环境目录,即为pipenv环境 - 执行
pipenv --venv获取pipenv创建的虚拟环境根路径,和执行which python(Windows端执行where python)输出的当前激活的解释器路径对比,二者匹配即可确认是pipenv环境
提示与exit行为异常原因
提示出现原因
你已经处于VSCode自动激活的pipenv虚拟环境中,此时再执行pipenv shell或pipenv install时,pipenv会自动检测到当前Shell进程已处于虚拟环境上下文,就不会再嵌套启动新的虚拟环境,直接复用当前环境执行操作,这个提示属于pipenv的正常机制。
exit直接关闭终端原因
VSCode的终端自动激活逻辑,是在终端启动时直接在当前主Shell进程中执行虚拟环境激活脚本,而非你手动执行pipenv shell时创建的子Shell进程承载虚拟环境。
- 手动执行
pipenv shell进入的是子Shell,exit只会退出子Shell,回到系统默认环境 - VSCode自动激活是在主Shell操作,
exit会直接终止主Shell进程,因此直接关闭终端
如果需要退出虚拟环境回到系统默认Python上下文,不要执行exit,执行对应Shell的去激活命令即可:
- Windows CMD:
deactivate.bat - Windows PowerShell、Linux、MacOS:
deactivate
内容的提问来源于stack exchange,提问作者danialsaufi
相关产品推荐
相关产品推荐

