9

我想创建一个 python 分发包,并且需要为我自己的包检查所有必需的包。

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

有什么方法可以检查我需要哪些包,并为我自己的项目维护最低要求的包?

4

2 回答 2

6

通常人们通过安装了所需模块的单独虚拟环境来了解他们的需求。在这种情况下,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)
    
于 2014-06-09T16:06:55.220 回答
6

pip freeze将打印您当前环境中碰巧安装的任何软件包。要列出实际正在导入的包,请使用pipreqs

pip install pipreqs
pipreqs path_to_project
于 2020-05-06T10:24:21.463 回答