当前位置:   article > 正文

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

conda activate pytorch 'conda' 不是内部或外部命令,也不是可运行的程序 或批处

现象

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

  • Add to Path…(Not recommend)

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

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

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

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

(base) e:\Python>
  • 1

出现这个问题可能导致某些包在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%
  • 1

里,输出重定向至文件%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)),说明已经正常工作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/73307?site
推荐阅读
相关标签
  

闽ICP备14008679号