【virtualenv】切换到虚拟环境时报错ERROR: The executable D:\python_learn\untitled\venv\Scripts\python.exe is not functioning

问题描述:
Q1:在创建项目时,选择使用虚拟环境,如下图操作步骤,切换至选中的python解释器—>点击保存,页面弹窗报错:ERROR: The executable D:\python_learn\untitled\venv\Scripts\python.exe is not functioning
目前已经尝试的处理方法:
1.百度过,说可能是因为路径中存在中文所致,所以将Temp目录(存放系统缓存的目录)更改至D盘,但仍未解决;
2. 提示:D:\Temp\tmpuu_spaq_pycharm-management\virtualenv-15.1.0\virtualenv.py:1039: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module’s documentation for alternative uses
import imp
No pyvenv.cfg file 但是在D:\Temp\未找到该文件。
操作截图如下:
图一


图二
图三

Q2:创建项目时,

这个Base interpreter使用原生环境的与使用虚拟环境的有何不同? 如果说解释器不同,那也可以直接选择解释器版本而不需要创建虚拟环境了呀? 如果说要控制安装的库版本不同,那创建项目时已经使用new enviroment,不同的项目都有独立的venv了。所以,该如何理解本地通过virtualenv创建虚拟环境的作用呢?

venv相当于是基于你下面选择的base interpreter 基础python版本来创建的一个虚拟环境,版本会与你选择的基础python版本一致。我看你几张图中操作的项目虚拟环境都不太一样,不知道你这个报错的环境是怎么创建的?

图一是创建项目时 默认显示python37下的解释器,图二是选择虚拟环境hgwz_15下的解释器,图三是报错信息(这边显示的是环境不是在创建时的截图 而是默认创建后,在Setting里更换虚拟环境的场景,两边报错是一样的 所以就直接用这张截图了 ps:这张截图报错之前在群里问过 没人回应…)

既然venv已经是创建了一个虚拟环境,那virtualenv的作用仅仅是创建一个不同版本的python解释器吗?
目前的困惑点就是:virtualenv和pycharm创建项目时的venv的作用和不同点分别是什么?

1.venv是基于base interpreter来创建的,如果你的base interpreter的python版本是3.6,那么创建出来的venv的版本也是3.6,如果你的base interpreter是3.7,那么创建出来的venv也是3.7版本,venv相当于是你本地python环境的一个复制
2.在pycharm中创建项目,如果选择virtualenv,那么在你创建完项目后,会在项目目录下有个venv
3.venv的作用是为了防止多项目下的python包版本的混乱,每个创建创建一个venv,则保证了每个项目在初始的时候都是一个类似全新的python,在下面安装其它依赖包,跟其它项目不会有关联

谢谢你的解答,已经理解了venv,那virtualenv的作用又是什么呢

你的venv就是通过virtualenv来创建的,virtualenv就是一种多环境的包版本工具