【Python】 “‘conda‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。”(未“Add to Path”安装)

当在Windows上安装Anaconda且未选择添加到Path时,可能会遇到'conda'命令无法运行的问题。这通常是由于CMD与VSCode终端的编码不兼容导致。解决方案包括修改启动脚本,使其支持UTF-8编码,并为Python Prompt创建独立的启动批处理文件。VS Code 1.43.1及以上版本可能已修复此问题,之前的修改可能需要回滚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

由于安装anaconda3时在是否把anaconda3加入path那里

  • Add to Path…(Not recommend)

是不建议的,因此很多安装时会不勾选这一选项。

然后使用vscode调用cmd运行Python的编辑器调试Python时,终端经常会出现诸如

e:\Python>D:/Anaconda3/Scripts/activate
系统找不到指定的路径。
系统找不到指定的文件。
e:\Python>conda activate base
'conda' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

而正常情况下,执行完脚本应该出现的cmd提示符应该类似于

(base) e:\Python>

出现这个问题可能导致某些包在import时失败(因为环境没有启动,找不到对应的包)。

原因

这个问题是由于windows用户名为中文时发生。

cmd一般默认是基于ANSI系编码的(包括中文用户最常用的936GBK)而vscode的终端仅支持来自cmd的UTF-8编码数据。在这里插入图片描述因此,在启动conda环境时,在最后一步执行的Anaconda3\condabin\_conda_active.bat中的这一行

@"%CONDA_EXE%" %_CE_M% %_CE_CONDA% shell.cmd.exe %* 1>%UNIQUE%

里,输出重定向至文件%UNIQUE%时会采用utf-8编码,但后面读取该文件时却又是用cmd的GBK编码来读取,这就会造成错误。

在这一行前添加chcp 65001可以使vscode不再报错,但是会使anaconda提供的Python Prompt(base environment)出现同样的问题(因为cmd的读写都是GBK,在添加了chcp 65001之后会变成读utf-8,写GBK的情况,出现另一种乱码)。

如果想一劳永逸地解决此问题,需要为Python Prompt(base environment)单独创建一个脚本。

解决

  1. 打开Anaconda3\Scripts\activate.bat,在第一行前新建一行,写入chcp 65001,保存;
  2. 将该批处理复制一份,重命名为另一其他名字(比如cmdactivate.bat);
  3. 打开刚刚复制的批处理,删去最开始的chcp 65001,保存;
  4. 将anaconda的Python Prompt(base environment)指向复制的批处理。

完成。


更新 20200318

自VS code 更新1.43.1版本后,此现象已经(至少在我的电脑上)被修复,也就是说如果仍然chcp至代码页65001反而会产生错误。
建议将之前的改动(即chcp 65001)删去或改为936,应该可以正常工作。
如果提示符前出现环境(如(base)),说明已经正常工作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值