Conda in Windows under MSYS2 and Zsh 的问题解决
Conda in Windows under MSYS2 and Zsh 的问题解决
在Window11上使用git bash 安装zsh,并配置p10k主题,主要问题就是prompt中无法显示conda env;conda activate/deactivate 命令不能正常使用;
总结其实就是一个核心问题,\r,\n,\r\n的区别;
Errors likes these:
(eval):11: parse error near ^M
\r被解析成了^M,导致路径错误,如下:/c/Users/joaom/Miniconda3/Scripts/conda.exe^M
~
❯ conda activate base
~ [base]
❯ conda deactivate
__conda_activate:13: no such file or directory: /c/Users/joaom/Miniconda3/Scripts/conda.exe^M
或者,conda init 无效:
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If using 'conda activate' from a batch script, change your
invocation to 'CALL conda.bat activate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
- bash
- cmd.exe
- fish
- tcsh
- xonsh
- zsh
- powershell
See 'conda init --help' for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.
或者一些其他的报错,是关于window 和 unix编码的问题。
参考;
Conda in Windows under MSYS2 and Zsh line ending problems · Issue #9922 · conda/conda (github.com)
尝试过程:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
#if [ -f '/d/Anaconda3/Scripts/conda.exe' ]; then
# eval "$('/d/Anaconda3/Scripts/conda.exe' 'shell.zsh' 'hook')"
#fi # temp solution
. /d/Anaconda3/etc/profile.d/conda.sh
# <<< conda initialize <<<
使用大佬分享的conda.sh文件;
export CONDA_EXE=$(echo '/cygdrive/c/Users/karp/anaconda3/Scripts/conda.exe' | tr -d '\r')
export _CE_M=''
export _CE_CONDA=''
export CONDA_PYTHON_EXE='C:\Users\karp\anaconda3\python.exe' # Copyright (C) 2012 Anaconda, Inc
# SPDX-License-Identifier: BSD-3-Clause __add_sys_prefix_to_path() {
# In dev-mode CONDA_EXE is python.exe and on Windows
# it is in a different relative location to condabin.
if [ -n "${_CE_CONDA}" ] && [ -n "${WINDIR+x}" ]; then
SYSP=$(\dirname "${CONDA_EXE}")
SYSP=$(echo ${SYSP} | tr -d '\r')
else
SYSP=$(\dirname "${CONDA_EXE}")
SYSP=$(\dirname "${SYSP}")
SYSP=$(echo ${SYSP} | tr -d '\r')
fi if [ -n "${WINDIR+x}" ]; then
PATH="${SYSP}/bin:${PATH}"
PATH="${SYSP}/Scripts:${PATH}"
PATH="${SYSP}/Library/bin:${PATH}"
PATH="${SYSP}/Library/usr/bin:${PATH}"
PATH="${SYSP}/Library/mingw-w64/bin:${PATH}"
PATH="${SYSP}:${PATH}"
PATH=$(echo ${PATH} | tr -d '\r')
else
PATH="${SYSP}/bin:${PATH}"
PATH=$(echo ${PATH} | tr -d '\r')
fi
\export PATH
} __conda_exe() (
__add_sys_prefix_to_path
$(echo "$CONDA_EXE" | tr -d '\r') $_CE_M $_CE_CONDA $(echo "$@" | tr -d '\r')
) __conda_hashr() {
if [ -n "${ZSH_VERSION:+x}" ]; then
\rehash
elif [ -n "${POSH_VERSION:+x}" ]; then
: # pass
else
\hash -r
fi
} __conda_activate() {
if [ -n "${CONDA_PS1_BACKUP:+x}" ]; then
# Handle transition from shell activated with conda <= 4.3 to a subsequent activation
# after conda updated to >= 4.4. See issue #6173.
PS1="$CONDA_PS1_BACKUP"
PS1=$(echo ${PS1} | tr -d '\r')
\unset CONDA_PS1_BACKUP
fi
\local ask_conda
ask_conda="$(PS1="${PS1:-}" __conda_exe shell.posix "$@")" || \return
ask_conda=$(echo ${ask_conda} | tr -d '\r')
\eval "$ask_conda"
__conda_hashr
} __conda_reactivate() {
\local ask_conda
ask_conda="$(PS1="${PS1:-}" __conda_exe shell.posix reactivate)" || \return
ask_conda=$(echo ${ask_conda} | tr -d '\r')
\eval "$ask_conda"
__conda_hashr
} conda() {
\local cmd="${1-__missing__}"
case "$cmd" in
activate|deactivate)
__conda_activate $(echo "$@" | tr -d '\r')
;;
install|update|upgrade|remove|uninstall)
__conda_exe $(echo "$@" | tr -d '\r') || \return
__conda_reactivate
;;
*)
__conda_exe $(echo "$@" | tr -d '\r')
;;
esac
} if [ -z "${CONDA_SHLVL+x}" ]; then
\export CONDA_SHLVL=0
# In dev-mode CONDA_EXE is python.exe and on Windows
# it is in a different relative location to condabin.
if [ -n "${_CE_CONDA:+x}" ] && [ -n "${WINDIR+x}" ]; then
PATH="$(\dirname "$CONDA_EXE")/condabin${PATH:+":${PATH}"}"
else
PATH="$(\dirname "$(\dirname "$CONDA_EXE")")/condabin${PATH:+":${PATH}"}"
fi
\export PATH # We're not allowing PS1 to be unbound. It must at least be set.
# However, we're not exporting it, which can cause problems when starting a second shell
# via a first shell (i.e. starting zsh from bash).
if [ -z "${PS1+x}" ]; then
PS1=
fi
fi
目前仍然存在的问题是:
虽然conda activate/deactivate 命令不报错了,但是非base的虚拟环境并未完全激活;
如下,base env 正常,但其他的env 就不行;(注意*,表示当前激活环境)
❯ conda activate base
❯ conda env list
# conda environments:
#
base * D:\Anaconda3
d2l D:\Anaconda3\envs\d2l
非base env 的情况:(并未激活;)
❯ conda activate d2l
❯ conda env list
# conda environments:
#
base D:\Anaconda3
d2l D:\Anaconda3\envs\d2l
后来又找到:https://github.com/conda/conda/issues/9922#issuecomment-1361695031
完美解决。
❯ conda activate d2l
❯ conda env list
# conda environments:
#
base D:\Anaconda3
d2l * D:\Anaconda3\envs\d2l
Conda in Windows under MSYS2 and Zsh 的问题解决的更多相关文章
- Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置
Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置 1.简介 本文主要是 Windows 下 MSYS2 环境配置和 MinGW-w64 C++编译环境配置方法 2.下载 ...
- 一文搞定 Windows Terminal 设置与 zsh 安装 (非WSL)
为 Windows Terminal 添加标签页 添加 Anaconda 标签页 在settings.json文件中的list列表中添加设置项: { // Make changes here to t ...
- windows 配置msys2环境
msys2是一个在windows下模拟类unix的环境,之所以叫环境,是用为他提供了部分unix shell类似的功能,这个环境使你像在unix上使用shell一样.看到msys2你可能想到是不是还有 ...
- windows安装msys2 mingw64
msys2包含mingw32和mingw64 步骤1 首选安装msys64 链接:https://pan.baidu.com/s/1l9Zfm4TE1Gg3c7tkaH6KeQ 安装到指定目录 步骤2 ...
- mysql学习-windows下绿色版mysql安装问题解决办法
1.下载绿色版mysql 从该地址http://dev.mysql.com/downloads/mysql/ 中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3.将根目录下的my-d ...
- Linux时间与Windows差8个时区的问题解决方法
我的Debian7.1的时间与windows上的时间不一致,正好差8个时区,原因是Debian将机器的物理时间理解为UTC时间了.去网上找了好多文章,基本上都是说要改/etc/default/rcS, ...
- Windows Live Writer介绍及相关问题解决
今天本来想说更新一篇我的文章,更新的过程中添加了很多的内容,里面的图片太多了,导致我浏览器占用的内存不断增大,浏览器变得很卡,最后过了好久我终于更新完文章打算保存的时候居然卡住,然后所有我更新的文字和 ...
- Windows 2003 Server 标准版启动问题解决(资源转贴)
维护的系统之一是部署在windows2003 Server标准版的服务器上,可能是由于某个应用问题,导致远程重启失败,害得我在机房呆了一早晨,可算是够折腾的.最后按照官方文档解决,刚放文档地址是:ht ...
- Windows 下的文件被占用问题解决
windows下,经常容易出现文件被其他程序占用的现象,令人十分头疼.更头疼的是,还看不到被谁占用. 实际上是有办法看到占用的进程的. 话不多说,以Win10为例: 1.打开资源监视器 a.直接程序栏 ...
- c++ windows与linux通信中文乱码问题解决方法
在linux中默认编码方式是UTF-8,在Windows下默认编码方式时GB2312.因此,在Windows和Linux进行通信的时候,如果没有进行转码则会出现乱码问题.因此,需要进行UTF-8和GB ...
随机推荐
- Java字符串的一些函数方法
一.substring()方法 String str="123456"; String s1=str.substring(2); //s1="3456" Str ...
- 数据库MYSQL常用命令
下载安装命令 Sudo atp-get install xxxx 验证是否安装并启动成功 Sudo netstat -tap | grep xxx 启动 Sudo service mysql star ...
- 2021年前端面试题-HTML篇
1.<img>的title和alt有什么区别? 1.alt:图片加载失败时,显示在网页的替代文字 2.title:鼠标放在上面时显示的文字 3.alt是必要属性,title非必要 2.WE ...
- vm 16 player安装与网络配置
1.密钥: FA1M0-89YE3-081TQ-AFNX9-NKUC0 2.安装步骤: xshell6,要先右键管理员运行绿化.bat,再双击.exe 3.一般的虚拟机,需要win上的v8适配器的ip ...
- 3月2号Android开发学习
(2)视图基础 1.设置视图的高度 视图宽度通过属性Android:layout_width表达,视图高度通过属性android:layout_heigth表达,宽高的取值主要有以下三种 1.matc ...
- 使用SecureCRT通过SSH连接远程Linux设备
Ubuntu安装和配置ssh教程 https://blog.csdn.net/future_ai/article/details/81701744 以SecureCRT为例: 把电脑和设备连接在同一个 ...
- vue-cli简介
1.定义:vue-cli(俗称:vue 脚手架)是 vue 官方提供的.快速生成 vue 工程化项目的工具,提供了终端里的 vue 命令.它可以通过 vue create 快速搭建一个新项目: 特点: ...
- 修改word文档中已有的批注者名称
前言 https://blog.csdn.net/hyh19962008/article/details/89430548 word中可以通过修改用户的信息实现新建的批注者显示不同的名称,但是对于文档 ...
- java 进程排查
[admin@New-OperSys-01 ~]$ jstack $pid | grep -A 50 55e7 "GC task thread#1 (ParallelGC)" os ...
- 3.javaweb-servlet
1. 设置编码 tomcat8之前,设置编码: 1)get请求方式: //get方式目前不需要设置编码(基于tomcat8) //如果是get请求发送的中文数据,转码稍微有点麻烦(tomcat8之前) ...