目录

1. 前言

2. requirements.txt

2.1 生成和使用命令

2.2 内容

3. environment.yml

3.1 常见问题

4. 总结

4.1 yml or yaml?


1. 前言

最近安装了一些从github上clone下载的开源python软件包,经历了许许多多的酸甜苦辣。

在python软件包,通常都会包含requirements.txt, environment.yml, setup.py三者之中某些或者全部,一开始完全不知道都是啥东东,通常都是遵照安装指示傻傻地一步一步走。但是久病成医,查阅了一些网上相关的资源逐渐也(自以为)明白了它们是咋回事。本文做一个简单的总结,不过这些只是小白的入门级的求生指南总结(所以不会包含高级使用相关的内容),如有错漏偏误欢迎指正^-^

简而言之,requirements.txt, environment.yml是同一类的东西,它们提供的是当前软件包安装运行所需要的环境或者依赖信息,即这些东西的安装是当前软件包安装和运行的前提条件。这些信息相当于是开发者给使用者提供的用于恢复自己开发时的环境的信息。

setup.py跟以上两者是完全不一样的,它就是用于安装当前软件包自身的安装脚本。这个要更加复杂一些,不在本文描述范围。

2. requirements.txt

2.1 生成和使用命令

requirements.txt的生成(开发者写的)用pip freeze命令,安装时使用也需要用pip命令,pip生成的requirements.txt用conda install无法识别。如下例所示:

pip freeze > requirements.txt # 生成requirements.txtpip install -r requirements.txt # 从requirements.txt安装依赖

2.2 内容

以下为一个(我正在鼓捣的一个包的)requirements.txt示例,当然这里并没有包含requirements.txt所有可能的语法要素(一般的像我这样的菜鸟也管不了这些),知道以上两个命令在大部分情况下足以生活自理了^-^。如果用"=="的话是指定了一个特定版本的包,而用“>=”则表示只要不低于这个版本就可以了,简明易懂。至于带"-e"选项的那两行我也不懂(待查阅学习和补充)。。。^-^

gym>=0.14.0
jupyter>=1.0.0
numpy>=1.16.4
pandas>=0.24.2
scipy>=1.3.0
scikit-learn>=0.21.2
matplotlib>=3.1.0
-e git+https://github.com/ntasfi/PyGame-Learning-Environment.git#egg=ple
-e git+https://github.com/lusob/gym-ple.git#egg=gym-ple
h5py>=2.9.0
pygame>=1.9.6
tqdm>=4.32.1

注意,“pip freeze”命令因为是提取当前环境的信息,因此所生成的requirements.txt应该都是"==",">="是(确信对应包只要不低于这个版本即可而)手动编辑修改的(我瞎猜的,待确认)。

3. environment.yml

注:关于yml or yaml?, 参见本文最后的解释。

environment.yml是用conda命令将环境信息导出备份的文件。

创建命令如下:

conda env export > environment.yml

软件安装时则执行以下命令就可以恢复其运行环境和依赖包:

conda env create -f environment.yml

注1:.yml文件移植过来的环境只是安装了你原来环境里用conda install等命令直接安装的包,你用pip之类装的东西没有移植过来,需要你重新安装。--待确认。

注2:environment.yml中包含该文件创建时所在的虚拟环境名称,不需要先执行"conda env create"创建并进入虚拟环境,直接在base环境下执行就会自动创建虚拟环境以及安装其中的依赖包(这个是与pip install -r requirements.txt不同的)。当然这就要求你的当前环境中没有同名的虚拟环境。如果暗装者不想使用environment.yml中内置的虚拟环境名(在environment.yml的第一行),可以使用-n选项来指定新的虚拟环境名,如下所示:

conda env create -f environment.yml -n new_env_name

environment.yml长得什么样子呢?如下是一个示例:

3.1 常见问题

在使用以上命令恢复环境时常见的两个问题:

1:Warning: you have pip-installed dependencies in your environment file, but you do not list pip itself as one of your conda dependencies.

解决办法:在yml文件中添加pip依赖,即在yml文件中添加如下行:

- pip

2:CondaValueError: prefix already exists: ......

这个就是上面所说的yml中所含的虚拟环境名与当前既存虚拟环境名冲突了,有两种解决方法,其一是直接修改yml文件中第一行的虚拟环境名,其二是如上所示在命令行用-n指定新的虚拟环境名。

4. 总结

简而言之,conda的.yml提供的信息比pip的requirements.txt提供的信息更完整,所以如果是使用conda进行开发和安装的话,当然应该优先选择conda的,yml.

4.1 yml or yaml?

有些时候你看到的不是yml后缀,而是yaml后缀,那它们有没有什么不同呢?

参见:symfony - What is the difference between .yaml and .yml extension? - Stack Overflow

看上去,结论是它们没有什么区别,瓶子里的酒都是相同的,都是YAML格式的内容。使用yml有历史原因以及“懒人”们的(用更短一点的后缀名的)习惯使然^-^。

Python库安装之requirements.txt, environment.yml相关推荐

  1. python 项目中的requirements.txt文件

    在查看别人的Python项目时,经常会看到一个requirements.txt文件,里面记录了当前程序的所有依赖包及其精确版本号.这个文件有点类似与Rails的Gemfile.其作用是用来在另一台PC ...

  2. Python 生成requirement 使用requirements.txt

    python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号.以便新环境部署.requirements.txt可以通过pip命令自动生成和安装生成requ ...

  3. Python 库安装方法:pip安装tar.gz压缩包,pip安装whl文件

    Python 库安装方法 第一章:标准安装 ① Python 安装 tar.gz 压缩包 ② Python 安装 whl 文件 第二章:失败异常处理 ① whl 安装失败:whl is not a s ...

  4. nao机器人python库安装_NAO机器人学习笔记(1)

    1 NAO机器人硬件 1.1 红外线 红外线发射角度-60°~+60°,波长940nm. 1.2 超声波(声纳) NAO能够探测前方0.25~2.55m内是否有障碍物,探测角度60°,超声波频率为49 ...

  5. Python中自动生成requirements.txt 及 安装requirements.txt依赖

    requirements.txt 说明 requirements.txt文件记录了当前程序的所有依赖包及其精确版本号 其作用是用来在另一台PC上重新构建项目所需要的运行环境依赖. 自动生成 自动生成依 ...

  6. python怎么创建txt文件啊_搞定Python项目依赖:requirements.txt文件的创建和使用

    Python的强大在于它拥有数量众多的第三方库协助开发,在编写Python项目时,我们经常会使用很多第三方模块.由于不同设备和系统的差异性,导致我们很难分散地控制项目依赖(头铁的同学请绕道),于是re ...

  7. python库安装方法及下载依赖库

    python库的安装方法 直接使用pip pip install xxx python第三方下载,可以在地址栏上输入所需库的名字,进行快速查找 源码安装 python setup.py install ...

  8. python 项目自动生成requirements.txt文件

    任何应用程序通常需要设置安装所需并依赖一组类库来满足工作要求.要求文件是指定和一次性安装包的依赖项具体一整套方法. 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895 ...

  9. 【Python】Flask之requirements.txt文件记录三方包的版本号

    pip freeze > requirements.txt 该命令是将当前Python的虚拟运行环境里面的安装的所有的三方包的版本号记录下来,保存到requirements.txt文件中 pip ...

  10. Python 库安装提示:ModuleNotFoundError: No module named ‘windows‘. 问题解决方法

    就是缺少 windows 这个库. 解决方法: 我们只需要安装 pyHook 和 pyUserInput 这两个库就好了. pyHook 需要下载下来再安装,pip install 然后把下载的文件拖 ...

最新文章

  1. 函数计算助力闲鱼构建云端一体化变成模式
  2. WebIDE Initialization process
  3. Swift5.1 语言参考(十) 语法汇总
  4. OSGI(面向Java的动态模型系统)
  5. 面试题05. 替换空格
  6. QT:不停的提示“文件已改变”
  7. NodeJs——(8)http.ServerRequest的过程
  8. c++用数组初始化向量_用C ++初始化向量
  9. python 类装饰器和继承_python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)...
  10. quartz 整合 postgresql 附带例子
  11. CDN中加速域名和源站地址和回源HOST是什么,应该怎么填
  12. 杰出女吉他大师Muriel Anderson
  13. 【python】cannot import name ‘Imputer‘ from ‘sklearn.preprocessing‘ 解决办法
  14. Java多线程篇--threadlocal和线程池
  15. 【iOS】网络操作与AFNetworking
  16. 大数据开发实战系列之Spark电商平台
  17. php域名录入系统课设报告,用PHP编程开发“虚拟域名”系统
  18. Android studio 生成JavaDoc文档
  19. 建立一个带头结点的线性链表,用以存放输入的二进制数,链表的每一个节点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算;
  20. Thinking in BigData(五)大数据之统计学与数据挖掘

热门文章

  1. 【学习笔记】Baby Step Giant Step算法及其扩展
  2. Ubuntu下制作deb包的方法详解
  3. 深度学习笔记(50) 一维到三维推广
  4. A12 屏幕旋转流程
  5. mcrpg职业系统服务器,我的世界MC-梦想大陆RPG服务器1.7.10
  6. 一行Python代码有多强,可让图形秒变「手绘风」
  7. 初创企业适用的邮件群发软件
  8. 联想拯救者Y9000X 2020
  9. 读书笔记 - 说话之道 - 2
  10. 7-12 特立独行的幸福 (25 分)(如何判断特立独行)