本文叙述的问题诱因:系统用户名为中文
本文最后给出了解决方案,并给出了原理猜测
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)
问题解决