0


在Anaconda的虚拟环境中添加环境变量并通过python访问(win/mac/linux)

一、前言

  1. 有的时候密码登比较敏感的信息,不方便直接写在代码里
  2. 有很多变量我想很多project都可以访问到

那这时候使用环境变量是非常合适的了。

二、设置环境变量

以linux为例

  1. 直接在internal执行命令 export 变量=值
  2. 通过更改bashc文件
vim ~/.bashrc
# 在最后一行加上 
# 通过按i进行插入以下,之后填完通过esc之后:qw! 保存退出
export 变量=值
# 例如:
export PATH=$PATH:/home/che/bin
# 让新加的环境变量生效
source ~/.bashrc

在代码里访问:(以python为例)

import os
value = os.getenv(key)

mac类似:
2b8110c448435d89a6a945e37001a763.png

三、conda情况下

如果没有conda的情况下,直接在环境下这么做,getenv是没问题的

但是如果你用conda去create一个env,在这个env下如果在用这种方法去创建环境变量是不可行的。

就算是你已经source activate new_env进入新环境去export一个变量,依然还是在base环境中加入的环境变量,在new_env不起作用,new_env虚拟环境有一个独立的虚拟环境变量空间。

3.1 在mac和linux执行以下语句可以解决这个问题:

  1. 先执行,得到这个new_env的路径
echo $CONDA_PREFIX

0bc8961d59240b6551df3b262c41cb93.png

  1. 得到这个path之后,创建这些文件
cd $CONDA_PREFIX
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh
  1. 编辑这个./etc/conda/activate.d/env_vars.sh文件(vim即可)
#!/bin/sh

export KEY=VALUE
  1. 之后编辑 ./etc/conda/deactivate.d/env_vars.sh文件
#!/bin/sh

unset KEY
  1. 重启环境
source avtivate new_env

如果这样配置在source activate new_env执行后,环境变量KEY开始生效

在执行conda deactivate,KEY被释放掉

这样你在进入new_env之后,在用get_env("KEY")的时候就可以获得对应的VALUE值了

3.2 windows下

1.得到路径

%CONDA_PREFIX%
  1. 创建文件
cd %CONDA_PREFIX%
mkdir .\etc\conda\activate.d
mkdir .\etc\conda\deactivate.d
type NUL > .\etc\conda\activate.d\env_vars.bat
type NUL > .\etc\conda\deactivate.d\env_vars.bat
  1. 修改.\etc\conda\activate.d\env_vars.bat
set KEY=VALUE
  1. 修改.\etc\conda\deactivate.d\env_vars.bat
set KEY=
  1. 重启环境
conda activate new_env

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:****AI蜗牛车

保持谦逊、保持自律、保持进步

a289e08c4eea67ffa5445d7283a085df.jpeg

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

标签: linux python macos

本文转载自: https://blog.csdn.net/qq_33431368/article/details/131098554
版权归原作者 AI蜗牛车 所有, 如有侵权,请联系我们删除。

“在Anaconda的虚拟环境中添加环境变量并通过python访问(win/mac/linux)”的评论:

还没有评论