让Conda在中文用户名下运行

本实验仅测试于Windows10系统中,理论上这个方法可以适应任何系统,核心是修改.condarc文件中的参数路径,使其脱离中文,关于如何使用conda(anaconda,miniconda)可以参照我这个博客:Conda命令笔记

1.安装

安装的时候不要选择Just me(本用户),而是选择All(所有用户),Windows系统和Linux系统等都属于多用户系统,选择Just me会在 user(用户)/【你的用户名】 这个地方下展开conda的安装包,而这个地方由于中文用户名的关系是无法正常安装的,选择All的话则会安装到ProgramData中,这是一个英文路径,同时也是一个隐藏文件,在我们开启查看隐藏文件之后可以直接访问并安装成功。

LINUX下按Ctrl+H可以直接查看隐藏文件

Windows下在文件夹选项选择查看,下拉菜单可以看见隐藏文件是否可见的选项

2.测试

测试一个创建命令或者跟新命令,如conda update -all,你会发现因为中文的用户名,导致路径无法识别,这个问题也将导致无法create新的虚拟环境,同时也无法install新得安装包,这导致conda变得十分鸡肋(但反应中也存在部分计算机用户识别成功了这个中文环境,具体原因不明)

3.info信息

我们可以先输入conda info来查看我们conda的配置信息,如本人信息如下(这个是已经修改过的)

(py37A) C:\Users\杰>conda info

     active environment : py37A
    active env location : C:\ProgramData\Anaconda3\envs\py37A
            shell level : 1
       user config file : C:\Users\杰\.condarc
 populated config files : C:\Users\杰\.condarc
          conda version : 4.7.12
    conda-build version : 3.17.8
         python version : 3.7.3.final.0
       virtual packages : __cuda=10.1
       base environment : C:\ProgramData\Anaconda3  (read only)
           channel URLs : https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64
                          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch
                          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64
                          https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\ProgramData\Anaconda3\pkgs
                          D:\Anaconda3\pkgs
       envs directories : C:\ProgramData\Anaconda3\envs
                          D:\Anaconda3\envs
                          C:\Users\杰\.conda\envs
                          C:\Users\杰\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.7.12 requests/2.22.0 CPython/3.7.3 Windows/10 Windows/10.0.18362
          administrator : False
             netrc file : None
           offline mode : False

从整体而言,读取信息是自上而下的,也就是说读取某一条路径,会从第一条读取,如果成功边不再读取后文,检索环境也是同理。

名词大体解释一下:
  • channel URLs:表示下载源,本人由于提前更换的清华大学的镜像源所以首选是清华大学的内容,因此首选检索清华的镜像内容
  • package cache:表示包缓存,意思是我们需要下载的包会放置在什么位置,第二次下载就直接从这个路径中提前获取而不再网上重新下载(节省下载时间,但同时占用计算机存储)【本人由于是中文路径,发生下载错误的核心之一就是这里出错】
  • env directories:环境路径表示我们的虚拟环境首选安装在什么位置,一般而言存在用户路径和全局路径之分,按照自上而下的检索顺序,可以简略的理解为第一条就是你的虚拟环境安装的位置

我们核心就是要修改package cache的路径和env directories的路径。

4.修改.bashrc

打开此电脑,C盘,找到用户(有时也叫user),进入选中你自己的用户名文件夹

选中.bahsrc文件,右键用文档打开,添加如下内容,具体路径根据自己电脑情况进行配置安装,理论上你输入一个D盘的路径他也会自动下载到D盘,这样做可以节省C盘空间的浪费【注意提前创建文件夹】,这里只是提供一个参考,具体请自由发挥

envs_dirs:
  - C:\ProgramData\Anaconda3\envs
  - D:\Anaconda3\envs                       
pkgs_dirs:
  - C:\ProgramData\Anaconda3\pkgs
  - D:\Anaconda3\pkgs

本人这个文件全部的内容(包括还源和修改响应时间等配置,可以参考)

ssl_verify: true
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
envs_dirs:
  - C:\ProgramData\Anaconda3\envs
  - D:\Anaconda3\envs                       
pkgs_dirs:
  - C:\ProgramData\Anaconda3\pkgs
  - D:\Anaconda3\pkgs

remote_read_timeout_secs: 600.0
show_channel_urls: true
report_errors: true

修改完成之后请update进行测试一下。

本文使用Windows10进行测试,理论上Linux系统同理。

PS:经过几周的实际使用,发现大多数情况下需要管理员权限【即Windows使用管理员运行,Linux需要使用root账户等类似方案】

分类: AI

2 条评论

nikos · 2024年3月27日 上午9:12

博主你好,我想请问您就是我conda init的时候总是会报错,因为中文用户名的关系,博主有什么办法吗?

    Mustenaka · 2024年3月27日 下午3:22

    问题原因有很多,需要具体根据报错信息来分析

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注