conda修改默认环境安装位置
文章目录
- conda修改默认环境安装位置
- 查看conda配置信息
- 创建`.condarc`(conda runtime controlling)配置文件
- 没有`.condarc`怎么办
- 即使创建正确放置了`.condarc`创建环境时还是默认指定C盘
- 目录写权限
- 目录修改权限
查看conda配置信息
conda config --show
conda info
查看envs-dirs
字段中的路径
首先查看路径个数
再查看路径优先级,即哪一个路径在第一位
上图是我已经修改过后的envs-dirs
字段的内容
如果是默认内容,第一个路径应该是C:\Users\PC\.conda\envs
创建.condarc
(conda runtime controlling)配置文件
该文件理论上来说应放置于C:\Users\PC\
目录下,这个目录是用户的个人目录,在该用户下的所有执行命令都以该目录下的.condarc
为基本, 并以此进行相关操作的配置执行.
这里涉及到配置文件放置位置的优先级和作用方式的一些概念, 即全局配置和局部配置的相对作用:
- 全局配置: 即把配置文件放置在全局或者系统范围的目录中, 这种放置方法通常会影响到使用该软件的所有用户
- 影响所有用户: 即类似于在Linux系统中将配置文件放置到了root根目录下, 这样所有的用户都会受到该配置文件的影响, 但是这种配置文件的优先级是最低的, 即如果有某个用户在自己的用户根目录下也放置了一份作用于同样软件的配置文件, 那么在软件启动试图读取配置文件中的相关配置信息时, 将会以放置在当前使用用户的用户根目录下的配置文件
- 影响一个用户组中的所有用户: 假如一个用户进行用户管理, 创建了很多子用户, 那么在该用户的根目录下放置的配置文件将会作用于该用户组内的所有子用户, 但如果子用户也在自己的用户根目录下放置了一份该配置文件, 那么在子用户启动软件时, 软件将以放置在当前子用户的用户根目录下的配置文件为主. 即放置在用户组的主用户根目录下的配置文件的优先级仅仅高于放置于root目录下的配置文件, 低于放置在更小单位的子用户的用户根目录下的配置文件的优先级.
- 局部配置: 即把配置文件放置到该软件安装目录的根目录下, 当软件启动时会首先根据该位置的配置文件进行读取. 即放置在安装目录的根目录下的配置文件的优先级是最高的
即优先级从低到高为:
root用户根目录(不区分用户组) -> 用户组主用户根目录(不区分子用户) -> 子用户根目录 -> 软件根目录
我们一般不将配置文件直接放置在软件根目录,因为这样不论是谁要启用该软件都会依照相同的配置信息,就无法实现基于用户的软件自定义配置信息设置,大大禁锢了软件使用的灵活性,并且在多人同时使用的时候也极易出现问题,因为每个人的使用偏好都不同。
对于windows来说,因为一般都是个人PC,无需关心用户管理,所以放置在系统根目录或者个人用户根目录下都是可以的
尽管基于个人PC的使用场景,不需要进行用户优先级的区分,但是windows还是有这种优先级机制,因为也确实存在使用windows做服务器的实例,在这种场景下就不得不进行用户权限划分,类似以下方式:
System就类似于Linux中的root用户
Administrator就类似于Linux中的用户组的主用户
Users就是各个用户组中的广泛的子用户
进行分层的权限控制,保证了多人协作时的文件安全。
但是对于windows个人PC其实没什么必要,因为只是你用。并且为了避免所有的配置文件都在用户根目录下面即C:\User\PC\
下造成找不到、看花眼的繁琐情况, 可以直接在软件的根目录进行配置文件的放置,方便易找
没有.condarc
怎么办
可能在自己电脑中查看寻找时, 不论用户根目录还是软件根目录都找不到, 那么就在软件根目录下自己创建一个
只是想修改默认默认环境安装位置只需添加envs-dirs
字段即可
格式如下:
envs-dirs:
[指定想要环境安装的路径]
然后重启Prompt conda即可
即使创建正确放置了.condarc
创建环境时还是默认指定C盘
目录写权限
此时需要检查envs-dirs
字段中指定的目录是否开启了用户的写权限
不然系统发现第一个路径无法进行环境的写入便会使用默认存在的C盘路径
目录修改权限
在打开写权限之后发现Prompt conda终于指向的理想的路径
很兴奋的敲下了Y
进行环境创建, 却发现环境创建失败, 提示少了一堆文件
因为此时目标目录没有打开修改权限, 系统则无法在目标目录中创建相应的文件并进行修改, 所以会出现以上错误
在对目标目录进行权限的释放之后, 则可以正常顺利的创建环境啦~