首页 > 解决方案 > 无法在 conda 环境中访问激活、停用或 conda

问题描述

因此,如果我加载一个 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 root. 这也不起作用,因为activate不能像上面列出的所有其他功能一样找到。

标签: pythonanacondaconda

解决方案


这只是发生在我身上。这是我发现的。

在我的环境的脚本文件夹中有三个脚本:

activate.bat
conda.bat
deactivate.bat

以及另外三个没有 .bat 扩展名的 bash 脚本。在每种情况下,他们所做的只是使用绝对路径名对同一工具的全局安装副本进行委托。

当在提示符处给出命令(例如“conda”)时,Windows 将搜索要执行的 .com、.exe 或 .bat 文件,并采用它找到的第一个文件。因为激活环境会将其位置添加到路径的开头,所以第一个实例窗口将找到环境中的 .bat 文件,该文件将被执行。

在我的情况下,.bat 文件的绝对路径错误,并试图委托给不存在的全局副本,因此出现错误消息。即使您在环境脚本目录中,您仍然会收到消息,因为它不是消息引用的 .bat 文件,而是 .bat 文件委托给的程序。

指定 conda.exe 时,您是专门要求 .exe 文件,这意味着 .bat 文件将不会被找到并运行,因此会找到全局副本,这当然可以。

根据 where x 的输出,我通过将每个 .bat 文件中的路径更改为工具的正确路径来修复它,从而解决了问题。


推荐阅读