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

Python的强大在于它拥有数量众多的第三方库协助开发,在编写Python项目时,我们经常会使用很多第三方模块。由于不同设备和系统的差异性,导致我们很难分散地控制项目依赖(头铁的同学请绕道),于是requirements.txt(后续文章中可能简称为requirements)就出现了。requirements.txt记录了当前环境中所使用的包和对应版本,能够配合Python的包管理工具快速地在其他系统中部署相同的环境,保证开发和部署的效率。

接下来我们介绍几种常用的生成和使用requirements.txt文件的方法:

一 pip freeze

pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具。

安装pip有两种方式,一种是源码安装(在Python2编译安装的时候没有安装pip,需要在官网下载安装,而Python3在安装的时候就默认安装了pip),还有一种方式是使用Linux系统的包管理软件,因为Linux系统一般都是有自带Python,如果只需要系统自带的Python,直接从系统的包管理器安装可以了。方法是“yum install python-pip”或“apt-get install python-pip”。

1. pip freeze生成requirements.txt

pip freeze > requirements.txt #这里的文件名可以自定义

1

pipfreeze>requirements.txt#这里的文件名可以自定义

2. pip使用requirements安装依赖

pip install -r requirements.txt

1

pipinstall-rrequirements.txt

二 pipreqs

上面介绍的pip管理依赖包的方法是最常用的做法,但是如果有使用过的同学,肯定知道这种方法也有弊端,就是pip创建项目依赖包requirements文件时会将整个环境的包都列出来(虚拟环境下不会包含pip和setuptools),往往需要我们手动删除很多当前项目不需要的依赖。

通常我们生成项目requirements.txt文件是希望得到当前项目的依赖情况,这时候推荐使用pipreqs。这个工具的优势在于它是通过对项目目录扫描自动发现依赖的类库,生产依赖清单,但是可能会存在一些偏差,需要手动调整。

pipreqs安装方法很简单,pip install pipreqs 即可。

pipreqs ./ #进入项目根目录运行即可

1

pipreqs./#进入项目根目录运行即可

这条命令可能会发生错误:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 186: illegal multibyte sequence

1

UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xa6inposition186:illegalmultibytesequence

解决方法:修改pipreqs.py文件中75行,将encoding修改为utf-8。或者运行命令的时候指定编码格式。

pipreqs ./ --encoding=utf8

1

pipreqs./--encoding=utf8

其他pipreqs的详细用法可以查找文档或参见命令帮助提示,使用生成的依赖与pip一致,需要“ pip install -r requirements.txt ”。

三 pip-compile

这种方法也比较适合精细化控制,需要自行创建requirements.in文件(这工具真的是傲娇,连个文件也不给生成)。创建文件后,需要手动写入依赖包的名称,如:

Django

requests

celery

1

2

3

Django

requests

celery

然后运行命令:

pip-compile requirements.in

1

pip-compilerequirements.in

此时pip-compile会根据当前环境中依赖包的版本填写配置文件,此时查看配置文件会发现生成的版本信息。

#

# This file is autogenerated by pip-compile

# Make changes in requirements.in, then run this to update:

#

# pip-compile requirements.in

#

Django==1.11.7

requests==2.19.1

celery==4.2.1

1

2

3

4

5

6

7

8

9

10

#

# This file is autogenerated by pip-compile

# Make changes in requirements.in, then run this to update:

#

# pip-compile requirements.in

#

Django==1.11.7

requests==2.19.1

celery==4.2.1

四 conda

conda 是针对于 Python 的环境和包管理工具( Conda是一个通用的包管理器,当初设计来管理任何语言的包,这么表述是因为被用来管理Python比较多),发布于2012年,在Python数据分析领域是与Numpy和Scipy一样受欢迎的工具。可以使用 minconda 或 anaconda 进行安装,前者是简化版本,只包含 conda 和其依赖。 Anaconda发行版会预装很多pydata生态圈里的软件,而Miniconda是最小的conda安装环境, 一个干净的conda环境。

conda 有 Python3.x 和 Python2.x 系列两个版本,其实都没有关系,因为你在使用 conda 进行创建环境时,可以指定 Python 的版本。一般来说 conda 仓库的软件没有 PyPI 更新快和全。所以推荐 conda 只用来创建虚拟环境(后面介绍),包的安装管理仍然使用 pip。但在 windows 下由于依赖不好处理,所以在使用 pip 失败时可以查询是否有编译好的 conda 包。

和pip相比,pip可以允许你在任何环境中安装Python包,而conda允许你在conda环境中安装任何语言包(包括c语言或者Python)。可以在virtualenv环境下安装conda,但是最好用conda自己的环境工具,这样会和pip有更好的兼容性。总结来看,pip 和 conda 是为不同目的存在的,我们应该更加关注怎么同时用好这两个工具,而不是只用一个。

conda批量导出包含环境中所有组件的requirements.txt文件:

conda list -e > requirements.txt

1

condalist-e>requirements.txt

批量安装requirements.txt文件中的组件依赖:

conda install --yes --file requirements.txt

1

condainstall--yes--filerequirements.txt

五 总结

喜欢 (0)or分享 (0)

你可能感兴趣的:(python怎么创建txt文件啊_搞定Python项目依赖:requirements.txt文件的创建和使用)