conda修改默认环境安装位置

conda修改默认环境安装位置

文章目录

查看conda配置信息

shell 复制代码
conda config --show
shell 复制代码
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字段即可

格式如下:

text 复制代码
envs-dirs:
	[指定想要环境安装的路径]

然后重启Prompt conda即可

即使创建正确放置了.condarc创建环境时还是默认指定C盘

目录写权限

此时需要检查envs-dirs字段中指定的目录是否开启了用户的写权限

不然系统发现第一个路径无法进行环境的写入便会使用默认存在的C盘路径

目录修改权限

在打开写权限之后发现Prompt conda终于指向的理想的路径

很兴奋的敲下了Y进行环境创建, 却发现环境创建失败, 提示少了一堆文件

因为此时目标目录没有打开修改权限, 系统则无法在目标目录中创建相应的文件并进行修改, 所以会出现以上错误

在对目标目录进行权限的释放之后, 则可以正常顺利的创建环境啦~

相关推荐
m0_5719575831 分钟前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2343 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
2401_850410833 小时前
文件系统和日志管理
linux·运维·服务器
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
一只哒布刘5 小时前
NFS服务器
运维·服务器
P.H. Infinity5 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天5 小时前
java的threadlocal为何内存泄漏
java
caridle5 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express