Conda系列:
- 翻译: Anaconda 与 miniconda的区别
- Miniconda介绍以及安装
- Conda python运行的包和环境管理 入门
- Conda python管理环境environments 一 从入门到精通
- Conda python管理环境environments 二 从入门到精通
- Conda python管理环境environments 三 从入门到精通
1. 设置环境变量
如果要将环境变量与环境相关联, 您可以使用配置 API。建议将其作为 使用 activate 和 deactivate 脚本,因为这些脚本是 可能不安全的任意代码。
首先,创建环境并激活它:
conda create -n test-env
conda activate test-env
要列出您可能拥有的任何变量,请运行conda env config vars list
.
要设置环境变量,请运行conda env config vars set my_var=value
。
设置环境变量后,必须重新激活环境:conda activate test-env
.
要检查是否已设置环境变量,请运行 echo $my_var
(在 Windows 上cho %my_var%
)或 conda env config vars list
.
停用环境时,可以使用这些相同的命令来查看 环境变量消失。
您可以使用-n
和 -p
标志指定要影响的环境。该-n
标志允许您命名环境,-p
并允许您指定环境的路径。
要取消设置环境变量,请运行conda env config vars unset my_var -n test-env
。
停用环境时,可以看到环境变量通过重新运行而消失echo my_var
或 conda env config vars list
显示变量名称 不再存在。
使用conda env config vars
设置的环境变量将保留在conda env export
.此外,您可以在environment.yml
文件中声明环境变量 如下所示:
name: env-name
channels:- conda-forge- defaults
dependencies:- python=3.7- codecov
variables:VAR1: valueAVAR2: valueB
2. 保存环境变量
Conda 环境可以包含已保存的环境变量。
在 Windows 和 macOS 或 Linux假设您想要一个环境“分析”来存储 登录服务器所需的密钥和 配置文件。以下各节解释了如何编写env_vars
的脚本。
这种类型的脚本文件可以是 conda 包的一部分,位于 在这种情况下,这些环境变量在 包含该包的环境已激活。
您可以将这些脚本命名为您喜欢的任何名称。但是,多个 包可能会创建脚本文件,因此请务必使用描述性 其他包未使用的名称。一个流行的选择是 在表单中为脚本命名packagename-scriptname.sh
或在 Windows 上packagename-scriptname.bat
, .
2.1 Windows
- 在 终端窗口,通过在命令 shell 中运行
%CONDA_PREFIX%
。 - 输入该目录并创建这些子目录和 文件:
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
- 编辑
.\etc\conda\activate.d\env_vars.bat
如下:
set MY_KEY='secret-key-value'
set MY_FILE=C:\path\to\my\file
- 编辑
.\etc\conda\deactivate.d\env_vars.bat
如下:
set MY_KEY=
set MY_FILE=
当您运行conda activate analytics
时,环境变量MY_KEY
和 MY_FILE
设置为写入文件的值。 运行conda deactivate
时,这些变量将被擦除。
2.2 macOS 和 Linux
- 在终端窗口中找到 conda 环境的目录, 通过在终端窗口中运行
echo $CONDA_PREFIX
。 - 输入该目录并创建这些子目录和 文件:
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
./etc/conda/activate.d/env_vars.sh
编辑如下:
#!/bin/shexport MY_KEY='secret-key-value'
export MY_FILE=/path/to/my/file/
./etc/conda/deactivate.d/env_vars.sh
编辑如下:
#!/bin/shunset MY_KEY
unset MY_FILE
当您运行conda activate analytics
时,环境变量MY_KEY
和 MY_FILE
设置为写入文件的值。 运行conda deactivate
时,这些变量将被擦除。
3. 共享环境
您可能希望与其他人共享您的环境— 示例,以便他们可以重新创建您已完成的测试。自 允许他们快速重现您的环境,以及所有 软件包和版本,给他们一份你的environment.yml
文件。
3.1 导出environment.yml文件
Note注意
如果您已经有一个文件environment.yml
当前目录,它将在此任务期间被覆盖。
- 激活要导出的环境:
conda activate myenv
Note注意
myenv替换为环境的名称。
- 将活动环境导出到新文件:
conda env export > environment.yml
Note注意
此文件处理环境的两个 pip 包 和 conda 包。
- 通过电子邮件将导出的
environment.yml
文件发送到 其他人。
3.2 跨平台导出环境文件
如果要使环境文件跨平台工作, 您可以使用该标志conda env export --from-history
。这 将仅包含您明确要求的软件包, 而不是将每个包都包含在您的环境中。
例如,如果创建环境并安装 Python 和package:
conda install python=3.7 codecov
这将下载并安装许多其他软件包来解决 用于依赖项。这将引入可能不兼容的软件包 跨平台。
如果使用conda env export
,它将导出所有这些包。 但是,如果您使用 conda env export --from-history
,它将 仅导出您专门选择的那些:
(env-name) ➜ ~ conda env export --from-history
name: env-name
channels:- conda-forge- defaults
dependencies:- python=3.7- codecov
prefix: /Users/username/anaconda3/envs/env-name
Note注意
如果您在 macOS 上安装了 Anaconda 2019.10,您的前缀可能是/Users/username/opt/envs/env-name
.
4. 手动创建环境文件
您可以手动创建环境文件 environment.yml
与他人分享。
示例:一个简单的环境文件:
name: stats
dependencies:- numpy- pandas
示例:一个更复杂的环境文件:
name: stats2
channels:- javascript
dependencies:- python=3.9- bokeh=2.4.2- conda-forge::numpy=1.21.*- nodejs=16.13.*- flask- pip- pip:- Flask-Testing
您可以通过添加 nodefaults
到频道列表。
channels:- javascript- nodefaults
这等效于传递--override-channels
选项 到大多数conda
命令。
将environment.yml
中的channels
列表添加nodefaults
与在.condarc
文件中的channels
列表中移除defaults
类似。然而,修改environment.yml
只影响您的一个conda
环境,而修改.condarc
会影响所有conda
环境。
有关使用此 environment.yml
文件创建环境的详细信息,请参阅从 environment.yml 文件创建环境。
5. 还原环境
Conda 保留对环境所做的所有更改的历史记录, 因此,您可以轻松地“回滚”到以前的版本。要列出对当前环境的每次更改的历史记录,请执行以下操作:
conda list --revisions
将环境恢复到先前版本:conda install --revision=REVNUM
或 conda install --rev REVNUM
。
如果你想将你的环境恢复到第8个版本,运行conda install --rev 8
。
6. 删除环境
若要删除环境,请在终端窗口中运行:
conda remove --name myenv --all
您可以使用conda env remove --name myenv
来代替。
若要验证环境是否已删除,请在终端窗口中运行:
conda info --envs
显示的环境列表不应显示已删除的 环境。
参考
https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html