python - 无法在 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
不能像上面列出的所有其他功能一样找到。
解决方案
这只是发生在我身上。这是我发现的。
在我的环境的脚本文件夹中有三个脚本:
activate.bat
conda.bat
deactivate.bat
以及另外三个没有 .bat 扩展名的 bash 脚本。在每种情况下,他们所做的只是使用绝对路径名对同一工具的全局安装副本进行委托。
当在提示符处给出命令(例如“conda”)时,Windows 将搜索要执行的 .com、.exe 或 .bat 文件,并采用它找到的第一个文件。因为激活环境会将其位置添加到路径的开头,所以第一个实例窗口将找到环境中的 .bat 文件,该文件将被执行。
在我的情况下,.bat 文件的绝对路径错误,并试图委托给不存在的全局副本,因此出现错误消息。即使您在环境脚本目录中,您仍然会收到消息,因为它不是消息引用的 .bat 文件,而是 .bat 文件委托给的程序。
指定 conda.exe 时,您是专门要求 .exe 文件,这意味着 .bat 文件将不会被找到并运行,因此会找到全局副本,这当然可以。
根据 where x 的输出,我通过将每个 .bat 文件中的路径更改为工具的正确路径来修复它,从而解决了问题。
推荐阅读
- android - 互联网丢失后 Firestore Android 重新连接时间太长(约 10 分钟)
- node.js - nodeJS中的条件http获取请求
- java - 单击时消失的 Java 文本字段背景文本
- visual-studio - TFS 测试文档:如何在测试用例中获取“自动化测试类型”
- node.js - 从 Node 上传多个文件到 SFTP
- c# - 在设置单值值之前,WPF 单值实例给出空异常
- ios - 从 HockeyApp 下载的 iPhone 应用程序无法正常工作
- java - 为什么我在比较我的优先级队列堆中的两个索引的行上得到空值?
- node.js - 如何在 JS 中存根嵌套的 promise
- solr - Solr 刻面结果未采用 csv 格式