无法在conda环境中访问activate、deactivate或conda

3

因此,如果我加载了Conda环境,并希望使用conda来安装包(或其他任何内容),我必须指定conda.exe

我的期望:

(randomenv) λ conda --version
The system cannot find the path specified.

实际有效的方法:

(randomenv) λ conda.exe --version
conda 4.5.4

更加复杂的是,以下内容:
(randomenv) λ where conda
C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\conda
C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\conda.bat
C:\ProgramData\Anaconda3\Scripts\conda.exe

第一条记录应该是C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\conda.exe,可能是环境设置错误了吗?

编辑:

我们现在遇到了使用方面的问题。我无法使用deactivate,因为deactivate没有.exe扩展名。

通常情况下,where deactivate会出现:

C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\deactivate
C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\deactivate.bat
C:\ProgramData\Anaconda3\Scripts\deactivate
C:\ProgramData\Anaconda3\Scripts\deactivate.bat

更加令人捧腹的挫败感是:
(randomenv) λ C:\Users\[USERNAME]\AppData\Local\conda\conda\endevs\randomenv\Scripts\deactivate
The system cannot find the path specified.

接下来更加美妙的是:
(randomenv) λ cd C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\

C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts
(randomenv) λ ls
2to3.exe*       conda*          easy_install.exe*       epylint-script.py  iptest3.exe*        ipython-script.py  pip-script.py    pygmentize-script.py  pyreverse.bat        symilar.exe*
2to3-script.py  conda.bat       easy_install-script.py  idle.exe*          ipython.exe*        isort.exe*         pydoc.exe*       pylint.bat            pyreverse.exe*       symilar-script.py
activate*       deactivate*     epylint.bat             idle-script.py     ipython3.exe*       isort-script.py    pydoc-script.py  pylint.exe*           pyreverse-script.py  wheel.exe*
activate.bat    deactivate.bat  epylint.exe*            iptest.exe*        ipython3-script.py  pip.exe*           pygmentize.exe*  pylint-script.py      symilar.bat          wheel-script.py

C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts
(randomenv) λ deactivate
The system cannot find the path specified.

为什么它找不到当前目录中的文件?

编辑2:

GitHub上发现以下问题,其中提到退出环境需要激活根目录。但是这也不起作用,因为像上面列出的所有其他函数一样,activate也找不到。

2个回答

2
最初的回答
这刚刚发生在我身上。以下是我的调查结果。
在我的环境的脚本文件夹中有三个脚本:
activate.bat
conda.bat
deactivate.bat

除去4个bash脚本外,还有三个没有.bat扩展名的文件。在每种情况下,它们所做的全部工作是使用绝对路径委托给全局安装的相同工具。

当在提示符处给出命令(例如“conda”)时,Windows将搜索要执行的.com、.exe或.bat文件,并选择找到的第一个文件。由于激活环境会将其位置添加到PATH的开头,因此Windows找到的第一个实例是环境内的.bat文件,该文件将被执行。

在我的情况下,.bat文件的绝对路径错误,并且尝试委托不存在的全局副本,因此出现了错误消息。即使您在环境脚本目录中,您仍将收到该消息,因为该消息所指的不是.bat文件,而是.bat文件委托的程序。

指定conda.exe时,您正在明确请求.exe文件,这意味着将找不到和运行.bat文件,因此将找到全局副本,这当然有效。

我通过更改每个.bat文件中的路径为工具的正确路径来解决了这个问题,根据where x的输出进行更改。


1
我遇到了同样的问题。有趣的是,当我设置一个新环境时,激活/停用命令可以正常工作。
我将这个环境的脚本文件夹与出现问题的环境进行了比较。出现问题的环境中的脚本文件夹中有激活/停用文件,就像你的一样,但正常工作的环境没有。
通过删除多余的脚本(停用、conda、激活、.pt-postlink),出现问题的环境现在又可以正常工作了。
我怀疑我所做的其他事情损坏了这个文件夹。可能我安装的某个包是罪魁祸首?如果我弄清楚了,我会回复的。

当我使用 conda 安装 ipykernel 时,遇到了同样的问题,上面的解决方法解决了它。 - RK1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接