对environment.yml文件的作用不解,初步学习一下。
Conda Environment Files
一般我们会产生requirements.txt
文件用于指定依赖的环境和包。(1)创建并激活虚拟环境;(2)pip安装,构建独立的工作环境
conda env create machine-learning-env
source activate machine-learning-env
pip install -r requirements.txt
Yml文件是对requirements.txt文件的扩展,Conda使用YAML(YML)来编写环境文件。YAML是一种人类可读的数据序列化语言,通常用于配置文件,并使用python风格的缩进表示嵌套。
为了确保自己的环境是真正可共享的,需要确保以一种通用的方式描述环境内容,即可以使用生成的环境文件在Linux、Mac OS和Windows上重现共享的环境(有特殊要求)。
这样做不仅产生一个文件可以与其他项目合作者共享,而且也有了一个文件可以用于版本控制,这进一步增强了个人的研究项目和工作流程的可重复性。
可以通过将requirement文件添加到yml文件中实现环境自动部署和依赖包安装,在Anaconda Prompt中运行一下命令:conda env create -f environment.yml
新创建的环境将安装在/XXX/Anaconda3/envs/目录中
#也可以使用yml来安装包 pip:
name: machine-learning-env
dependencies:
- ipython=7.13
- matplotlib=3.1
- pandas=1.0
- pip=20.0
- python=3.6
- scikit-learn=0.22
- pip=19.1
- pip:
- pypi-package-name
- kaggle==1.5
- yellowbrick==0.9
为了确保其他人能够独立于他们使用的操作系统重新生成我们分享的环境,请保在conda env export命令中添加--from-history参数。
conda env export --name machine-learning-env --from-history --file environment.yml
Updating an environment
通常我们不可能提前知道研究项目需要使用哪些包(以及版本号)。需要做的就是更新环境的内容.yml
文件运行以下命令:
conda env update --prefix ./env --file environment.yml --prune
--prune告诉Conda从环境中删除不再需要的任何依赖项。
Making Jupyter aware of your Conda environments
JupyterLab和Jupyter notebook都自动确保标准IPython内核在默认情况下始终可用。但是,如果想从Jupyter中使用基于特定Conda环境的kernel(而Juptyer并没有安装在这个的环境中),则需要手动为Conda环境创建kernel。
确保在Conda环境中安装了ipykernel
包,因为需要使用这个包来创建kernel spec file:
#environment.yml
name: ml-env
dependencies:
- ipykernel=5.3
- ipython=7.13
- matplotlib=3.1
- pandas=1.0
- pip=20.0
- python=3.6
- scikit-learn=0.22
#Bash
conda env create --prefix ./env --file environment.yml --force
conda activate ./env
python -m ipykernel install --user --name xgboost-env --display-name "XGBoost"
--name由Jupyter内部使用;--display-name在JupyterLab启动菜单和jupyternotebook下拉kernel菜单中显示。该命令将覆盖任何具有相同名称的现有kernel。
Workflow
创建项目目录.
创建
environment.yml
文件,通常环境名和文件夹名一致 .创建环境
$ conda env create
.激活环境
$ source activate ENV_NAME
并安装依赖包.创建
.env
文件:conda env export > environment.yml
重现环境:
conda env create -f environment.yml
实例:
#创建”example“环境,添加新的源,安装numpy,最后输出`.yml`文件
conda env create example
conda info -e
conda activate example
conda config --add channels bioconda
conda install numpy
##查看信息
conda config --get channels
conda list
#输出
conda env create -f environment.yml
输出environment.yml
文件:
name: example
channels:
- bioconda
- defaults
dependencies:
- blas=1.0=mkl
- bzip2=1.0.8=he774522_0
- ca-certificates=2022.07.19=haa95532_0
- certifi=2022.9.24=py310haa95532_0
- intel-openmp=2021.4.0=haa95532_3556
- libffi=3.4.2=hd77b12b_4
- mkl=2021.4.0=haa95532_640
- mkl-service=2.4.0=py310h2bbff1b_0
- mkl_fft=1.3.1=py310ha0764ea_0
- mkl_random=1.2.2=py310h4ed8f06_0
- numpy=1.23.1=py310h6d2d95c_0
- numpy-base=1.23.1=py310h206c741_0
- openssl=1.1.1q=h2bbff1b_0
- pip=22.2.2=py310haa95532_0
- python=3.10.6=hbb2ffb3_0
- setuptools=63.4.1=py310haa95532_0
- six=1.16.0=pyhd3eb1b0_1
- sqlite=3.39.3=h2bbff1b_0
- tk=8.6.12=h2bbff1b_0
- tzdata=2022c=h04d1e81_0
- vc=14.2=h21ff451_1
- vs2015_runtime=14.27.29016=h5e58377_2
- wheel=0.37.1=pyhd3eb1b0_0
- wincertstore=0.2=py310haa95532_2
- xz=5.2.6=h8cc25b3_0
- zlib=1.2.12=h8cc25b3_3
prefix: D:\Anaconda\conda\envs\example</pre>
插一项:在虚拟环境 如何使用pip下载包到当前环境
直接 pip install
发现并没有将依赖包安装到当前环境,而是安装到 base
环境中了。查阅资料有方法两个:
方法一:直接调用环境中的pip
# 替换成
D:\XXXX\Anaconda3\envs\env_name\Scripts\pip.exe intall package_name</pre>
方法二:直接改用conda install
reference
https://tdhopper.com/blog/my-python-environment-workflow-with-conda