有没有办法在我自己的python项目中自动检测所需的模块和包

时间:2014-06-09 15:27:43

标签: python pip requirements.txt

我想创建一个python发行包,需要检查我自己的包所需的所有包。

对于 requirements.txt ,它包含了所需的所有软件包。但是,我想找到一种方法来检查我需要的所有软件包,而且,对于某些软件包,它们也是我项目中其他软件包的一些要求。

有没有办法检查我需要哪些软件包,并维护我自己项目所需的最低软件包?

2 个答案:

答案 0 :(得分:4)

通常人们通过单独virtual environments安装必需的模块来了解他们的要求。在这种情况下,通过在虚拟环境中运行以下内容来制作requirements.txt文件是微不足道的:

pip freeze > requirements.txt

另外,为了避免生产中出现意外并对您拥有的代码充满信心,最好是进行测试并获得良好的test coverage。如果有一个模块导入但未安装,测试会显示它。


查找无法导入的模块的另一种方法是使用针对包的pylint静态代码分析工具。有一个特殊的F0401 - Unable to import %s警告。

演示:

  • 假设您有test.py个文件,其中包含importimport 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