系统用户名为中文导致PowerShell无法正确操作conda

本文叙述的问题诱因:系统用户名为中文
本文最后给出了解决方案,并给出了原理猜测

conda版本:4.10.3
系统版本:Win11 专业版 21H2

现象

我在Win11使用Powershell时,发现终端提示:conda没有被初始化,需要先执行初始化指令,再重启powershell。

按照正常流程初始化不成功

正常流程应当输入以下指令:

conda init powershell

执行后conda提示:No actions taken

但是我还是重启了powershell,果然还是没有任何反应。
再次进行activate操作时仍旧提示conda没有正确初始化。

修改powershell脚本配置无效

有一部分人通过修改powershell的配置后可以解决问题。
通过以下指令修改:

Set-ExecutionPolicy RemoteSigned

修改后,未能解决问题。于是再尝试另一条指令:

Set-ExecutionPolicy Unrestricted

仍旧无效。

无法使用source命令

有一部分人通过source命令操作后可以解决问题
指令如下:

source activate
source deactivate
conda activate <环境名>

但是我直接提示无法找到source命令,遂放弃。

安装完整Anaconda3后无法切换环境

在把conda加入系统环境变量之后,powershell可以识别出conda,可以执行conda activate base指令,但是执行后终端无显示。再输入python后发现可以顺利进入base下的python。
此时再执行

conda activate <环境名>

终端无变化,命令行前没有显示环境名,经检查,仍旧处在base下。

可能的解决方案

临时解决:通过cmd切换环境

若能够通过cmd执行conda有关指令的话:
在powershell中直接输入

cmd

进入cmd之后执行conda的一系列指令。
切换至所需环境后,再向终端输入

powershell

此时终端会带着切换好的conda状态回到powershell,在powershell内可以正常使用conda当前所属环境的功能。

但是这种方法略微繁琐且不能一劳永逸

问题根源:conda_init 写入路径错误

本人的Windows用户名为中文,用户文件夹路径如下:

C:\Users\暮光霭明\

不论是conda还是miniconda,在执行conda init powershell的时候,都是会向powershell的配置文件夹写入一个ps1配置文件。
此配置文件是存在于用户文件夹的,正确路径如下:

请注意:每个人的用户名不同, “暮光霭明” 是我的用户名
C:\Users\暮光霭明\Documents\WindowsPowerShell

经观察,发现conda初始化时不能正确访问带有中文名的目录。配置文件被错误地写入到了如下路径:

C:\Users\�����\Documents\WindowsPowerShell

解决方法

若系统用户名为中文,则在执行conda_init之后,理应可以在User文件夹下找到一个乱码的子用户文件夹。
根据上面给出的路径,找到Microsoft.PowerShell_profile.ps1文件
将这个文件平行移动至正确的子用户文件夹名下。

重启powershell,命令行开头直接显示(base)

问题解决

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值