我安装了miniconda3,并在其中创建了一个名为py35的虚拟环境。我有一些我只想在此环境中使用的库。因此他们在
/.../miniconda3/envs/py35/libs
但是,由于LD_LIBRARY_PATH不包含上述文件夹,因此无法从环境中找到它们。现在,我想将LD_LIBRARY_PATH设置为仅在虚拟环境中时才包含/ lib。
我当时正在考虑修改miniconda用来启动环境的激活脚本,但是不确定这是标准做法还是有更简单的方法来实现。
您可以在环境激活时通过编辑activate.d/env_vars.sh
脚本来设置环境变量。参见此处:https : //conda.io/docs/user-guide/tasks/manage-environments.html#macos-and-linux
该链接的关键部分是:
在“终端”窗口中找到conda环境的目录,例如
/home/jsmith/anaconda3/envs/analytics
。输入该目录并创建以下子目录和文件:
cd /home/jsmith/anaconda3/envs/analytics 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
编辑
./etc/conda/activate.d/env_vars.sh
如下:#!/bin/sh export MY_KEY='secret-key-value' export MY_FILE=/path/to/my/file/
编辑
./etc/conda/deactivate.d/env_vars.sh
如下:#!/bin/sh unset MY_KEY unset MY_FILE
运行时
conda activate analytics
,环境变量MY_KEY和MY_FILE设置为您写入文件中的值。运行时conda deactivate
,这些变量将被删除。
正是我想要的。谢谢。由于只有很小的改动,因为我添加了一些东西,
LD_LIBRARY_PATH
所以不能使用unset。相反,我export LD_LIBRARY_PATH=${LD_LIBRARY_PATH/'PATH_I_ADDED
在停用脚本中执行/“”}`我一直在尝试执行此操作,但是当我激活conda环境时,activate.d文件夹中的.sh文件似乎没有执行。我创建的新环境变量不存在。关于这个有什么建议吗?谢谢!
推荐的有用的内容。创建环境时有没有办法做到这一点?似乎与自动部署无关
@ E.Serra有
pre-link
,post-link
和post-unlink
当安装一个软件包,它发生在创作环境中使用的脚本。有充分的理由为什么conda不会自动执行此操作?毕竟,期望环境的用户能够通过激活环境来使用相互依赖的库。这些特定于环境的软件包中有很多都是它们的共享库和python包装器,所以什么时候您不想这样做?特定于env的.so文件不应该始终优先于其他位置吗?