pip 导出/导入 requirements.txt
导出
pip freeze > requirements.txt
导出格式(范例):
从文件中可以看到需要安装的package以及对应的版本
导入
pip install -r requirements.txt
conda 导出/导入 requirements.txt
导出
conda list -e > requirements.txt
导出格式(范例):
单纯的一看,conda导出的文件没有pip导出来的东西那么单纯,里面有很多看不懂的东西,我猜测是一些虚拟环境依赖的东西吧。就像第2行注释的那句:conda create --name <env> --file <this file>,应该可以直接通过这句创建一个新的虚拟环境,从这里面还可以找到虚拟环境中使用的python的版本,但pip导出来的中看不到
导入
conda install --yes --file requirements.txt
(这种执行方式,一遇到安装不上就整体停止不会继续下面的包安装)
FOR /F "delims=~" %f in (requirements.txt) DO conda install --yes "%f"
(这个执行能解决上面出现的不执行后续包的问题)
reference:https://www.cnblogs.com/maxiaodoubao/p/10605850.html
conda 导出/导入 requirements.yml
导出
conda env export | grep -v "^prefix: " > environment.yml
上面命令导出时通过grep删除了“prefix:“ ,但是实际好像通过文件创建的anaconda python环境,prefix选项好像是不起作用的
导出格式(范例):
这里面就包含了虚拟镜像的名称(在新建虚拟环境的时候你可以自己修改这个名称),还有python和pip的版本等等所有的依赖,后面还有一个pip,里面就有package的信息,例如numpy和mxnet的版本信息
如果是想完整的导出:
conda env export > environment.yml
这个里面会比上面的多一行:prefix: /src/anaconda3/envs/mxnet27。这一行是指明你的虚拟环境的位置,如果是用environment.yml新建一个虚拟环境这一行其实没有什么用,所以也没必要将其打印出来,所以推荐第一个的导出方式,去掉prefix
导入
conda env create -f environment.yml
上面命令会安装在conda默认的环境路径。如果不想用人家虚拟环境的名称,你可以自己修改environment.yml里面第一行name后面的名称
如果要指定其它安装路径,使用-p选项
conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name
reference:https://www.cjavapy.com/article/76/
https://blog.csdn.net/weixin_40330033/article/details/87790860
总结
从GitHub上clone下来的代码中,有时候包含的是requirements.txt,但有时候又是requirements.yml,那两者有什么区别呢,我目前简单的理解是:requirements.txt里面包含的仅是需要安装的package以及对应的版本,但requirements.yml里面包含的东西更完整,它包含了虚拟环境的依赖,以及虚拟环境的名称都有。但上面也提到了conda导出的requirements.txt也包含虚拟环境的依赖,可能唯一的区别是没有虚拟环境的名称吧,个人觉得导出的requirements.yml更加规范,将依赖和package分开了。所以建议是:
如果只想要package信息,用pip导出requirements.txt
如果是想要整个虚拟环境的信息,用conda导出requirements.yml