Windows10使用virtualenv创建虚拟环境后无法调用Python解释器问题
问题背景
- 运行环境为Windows 10系统,全局Python版本为
Python 3.9.6,安装路径为C:\Users\JATIN SAINI\AppData\Local\Programs\Python\Python39\,已添加至系统环境变量 - 已通过
pip install virtualenv命令安装virtualenv工具,在C:\Users\JATIN SAINI\Desktop\venv_test路径下创建测试目录 - 执行虚拟环境创建、激活操作后,调用
python、pip命令均返回Unable to create process报错 - 已尝试完全卸载重装全局Python,问题依旧存在
virtualenv官方文档说明:创建的Python虚拟环境通常不是完全独立的。完整的Python包通常包含数千个文件,因此将完整Python重新安装到新文件夹的效率很低。虚拟环境实际上只是空壳,自身包含的内容很少,大部分资源都从系统Python借用(也就是你安装Python时安装的本体)。这意味着如果你升级了系统Python,你的虚拟环境可能会损坏,请注意这一点。这种调用系统Python的机制的优点是创建虚拟环境的速度非常快。
报错复现操作
C:\Users\JATIN SAINI\Desktop\venv_test>virtualenv env created virtual environment CPython3.9.6.final.0-64 in 758ms creator CPython3Windows(dest=C:\Users\JATIN SAINI\Desktop\venv_test\env, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\JATIN SAINI\AppData\Local\pypa\virtualenv) added seed packages: pip==21.1.2, setuptools==57.0.0, wheel==0.36.2 activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator C:\Users\JATIN SAINI\Desktop\venv_test>cd env\Scripts\ C:\Users\JATIN SAINI\Desktop\venv_test\env\Scripts>activate (env) C:\Users\JATIN SAINI\Desktop\venv_test\env\Scripts>python Unable to create process using 'c:\users\jatin saini\appdata\local\programs\python\python39\python.exe' (env) C:\Users\JATIN SAINI\Desktop\venv_test\env\Scripts>pip list Unable to create process using 'c:\users\jatin saini\appdata\local\programs\python\python39\python.exe "C:\Users\JATIN SAINI\Desktop\venv_test\env\Scripts\pip.exe" list'
问题原因
该报错的核心诱因是系统用户名包含空格(JATIN SAINI中间的空格),virtualenv生成虚拟环境配置时,未给带空格的全局Python路径添加引号包裹,系统解析路径时会将空格识别为命令分隔符,导致无法正确找到Python可执行文件。官方文档提到的虚拟环境调用系统Python资源的逻辑本身没有问题,本次报错属于Windows路径空格的兼容性问题。
解决方案
方案1:修复现有虚拟环境
打开虚拟环境根目录下的pyvenv.cfg文件,将home参数对应的路径用双引号包裹,修改后示例:
home = "C:\Users\JATIN SAINI\AppData\Local\Programs\Python\Python39" include-system-site-packages = false version = 3.9.6
保存后重新激活虚拟环境即可正常使用。
方案2:创建虚拟环境时主动指定带引号的Python路径
删除现有异常的虚拟环境,执行创建命令时主动传入带双引号的全局Python路径,命令示例:
virtualenv env --python "C:\Users\JATIN SAINI\AppData\Local\Programs\Python\Python39\python.exe"
该方式生成的虚拟环境配置会自动处理路径空格问题。
方案3:使用Python自带venv模块
Python 3.3及以上版本自带venv虚拟环境模块,对Windows路径空格的兼容性更好,不需要额外安装第三方工具,创建命令为:
python -m venv env
内容的提问来源于stack exchange,提问作者sirius_white
相关产品推荐
相关产品推荐

