当前位置:首页 >> 脚本专栏

如何导出python安装的所有模块名称和版本号到文件中

Python 模块
概念

python中的模块是什么?简而言之,在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。模块可以被项目中的其他模块、一些脚本甚至是交互式的解析器所使用,它可以被其他程序引用,从而使用该模块里的函数等功能,使用Python中的标准库也是采用这种方法。

分类

在Python中模块分为以下几种:

  • 系统内置模块,例如:sys、time、json模块等等;
  • 自定义模块,自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。注意:自定义模块的命名一定不能和系统内置的模块重名了,否则将不能再导入系统的内置模块了。例如:自定义了一个sys.py模块后,再想使用系统的sys模块是不能使用的;
  • 第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码;

一般查看python下安装了什么包,我们可在命令行模式下输入

$ pip list

输出结果:

Package Version
---------------------------------- ---------
absl-py 0.9.0
alabaster 0.7.12
altgraph 0.16.1
anaconda-client 1.7.2
anaconda-navigator 1.9.7
anaconda-project 0.8.3
asn1crypto 1.0.1

2
也可以

$ pip freeze

输出结果:

absl-py==0.9.0
alabaster==0.7.12
altgraph==0.16.1
anaconda-client==1.7.2
anaconda-navigator==1.9.7
anaconda-project==0.8.3
asn1crypto==1.0.1

在python代码中,可以用os.popen方法调用命令行代码,返回输出的对象,然后再将此写入文件中:

import os

installed_module_list = os.popen("pip freeze")

# print(installed_module_list)
with open("requirements.txt",'w') as f:
 for m in installed_module_list.read():
 f.write(m)

不过这样显然麻烦了,还有更简单的方法:

$ pip freeze >requirements.txt

这样就直接将信息导出到文件中了

requirements.txt文件内容如下:

如何导出python安装的所有模块名称和版本号到文件中

在另一台服务器上想部署相同的包,只需运行:

$ pip install -r requirements.txt

总结