我在miniconda3上安装了一个虚拟环境py35,我有一些库只想在这个环境中使用,所以它们都在该环境下。
/.../miniconda3/envs/py35/libs
然而,它们在环境中并未被找到,因为LD_LIBRARY_PATH不包含该文件夹。现在我想在虚拟环境中设置LD_LIBRARY_PATH仅包含/lib。
我考虑修改miniconda使用来启动环境的激活脚本,但我不确定这是否是标准做法或者有没有更简单的方法来实现这一点。
我在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
时,这些变量将被删除。
export OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=/your/path:${LD_LIBRARY_PATH}
然后在 deactivate.d/env_vars.sh 中:
export LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH}
unset OLD_LD_LIBRARY_PATH
LD_LIBRARY_PATH
中,所以我不能使用unset
。相反,我在停用脚本中使用export LD_LIBRARY_PATH=${LD_LIBRARY_PATH/'PATH_I_ADDED
/""}`。 - FlyingTellerpre-link
、post-link
和post-unlink
脚本。 - darthbith