我想创建一个python发行包,需要检查我自己的包所需的所有包。
对于 requirements.txt ,它包含了所需的所有软件包。但是,我想找到一种方法来检查我需要的所有软件包,而且,对于某些软件包,它们也是我项目中其他软件包的一些要求。
有没有办法检查我需要哪些软件包,并维护我自己项目所需的最低软件包?
答案 0 :(得分:4)
通常人们通过单独virtual environments安装必需的模块来了解他们的要求。在这种情况下,通过在虚拟环境中运行以下内容来制作requirements.txt
文件是微不足道的:
pip freeze > requirements.txt
另外,为了避免生产中出现意外并对您拥有的代码充满信心,最好是进行测试并获得良好的test coverage。如果有一个模块导入但未安装,测试会显示它。
查找无法导入的模块的另一种方法是使用针对包的pylint
静态代码分析工具。有一个特殊的F0401 - Unable to import %s
警告。
演示:
假设您有test.py
个文件,其中包含import
个import pandas
语句
pandas
pylint test.py
模块未安装在当前的python环境中
这是$ 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)
的输出:
{{1}}
答案 1 :(得分:1)
pip freeze
将打印您当前环境中可能安装的所有软件包。要列出实际导入的软件包,请使用pipreqs
:
pip install pipreqs
pipreqs path_to_project