我想创建一个 python 分发包,并且需要为我自己的包检查所有必需的包。
对于requirements.txt,它包括它需要的所有包。但是,我想找到一种方法来检查我需要的所有包,而且对于某些包,它们也是我项目中其他包的一些要求。
有什么方法可以检查我需要哪些包,并为我自己的项目维护最低要求的包?
我想创建一个 python 分发包,并且需要为我自己的包检查所有必需的包。
对于requirements.txt,它包括它需要的所有包。但是,我想找到一种方法来检查我需要的所有包,而且对于某些包,它们也是我项目中其他包的一些要求。
有什么方法可以检查我需要哪些包,并为我自己的项目维护最低要求的包?
通常人们通过安装了所需模块的单独虚拟环境来了解他们的需求。在这种情况下,requirements.txt
通过在虚拟环境中运行以下命令来生成文件是微不足道的:
pip freeze > requirements.txt
此外,为了避免生产中的意外并对您拥有的代码充满信心,最好有测试和良好的测试覆盖率。如果有一个模块已导入但未安装,测试会显示它。
查找无法导入的模块的另一种方法是pylint
对包使用静态代码分析工具。有一个特别F0401 - Unable to import %s
警告。
演示:
假设您有一个test.py
文件,其中包含一条import
语句
import pandas
pandas
当前python环境中没有安装模块
这是输出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)
pip freeze
将打印您当前环境中碰巧安装的任何软件包。要列出实际正在导入的包,请使用pipreqs
:
pip install pipreqs
pipreqs path_to_project