有没有自动检测我自己Python项目中所需模块和包的方法?
我想创建一个Python的分发包,需要检查一下我自己的包需要哪些依赖包。
对于requirements.txt文件,它里面列出了所有需要的包。不过,我想找到一种方法,来检查我需要的所有包。而且,有些包其实也是我项目中其他包的依赖。
有没有什么方法可以检查我需要哪些包,并且保持我自己项目所需的最小依赖包呢?
2 个回答
9
pip freeze
这个命令会显示你当前环境中安装的所有软件包。想要列出实际被使用的那些软件包,可以用 pipreqs
:
pip install pipreqs
pipreqs path_to_project
7
通常,人们通过创建单独的虚拟环境并在其中安装所需的模块来了解自己的需求。在这种情况下,只需在虚拟环境中运行以下命令,就可以轻松生成requirements.txt
文件:
pip freeze > requirements.txt
此外,为了避免在生产环境中出现意外情况,并对你所拥有的代码充满信心,最好有测试和良好的测试覆盖率。如果有某个模块被导入但没有安装,测试会显示出来。
另一种查找无法导入模块的方法是使用pylint
这个静态代码分析工具来检查你的包。它会给出一个特别的F0401 - 无法导入 %s
警告。
示例:
假设你有一个
test.py
文件,其中只有一个import
语句import pandas
当前的Python环境中没有安装
pandas
模块下面是运行
pylint test.py
的输出:$ pylint test.py No config file found, using default configuration ************* Module test C: 1, 0: Missing module docstring (missing-docstring) F: 1, 0: Unable to import 'pandas' (import-error) W: 1, 0: Unused import pandas (unused-import)