如何知道不需要导入哪些Python模块?

时间:2017-08-14 14:06:26

标签: python pip python-import python-module

我正在整理我的项目virtualenv requirements.txt,并希望确保包含所有必需的软件包。导入jsonhashlib时出错,直到我意识到这些模块已包含在Python 3.6中

有没有办法找出import ed模块是否是已发布的Python模块的一部分而且我不需要通过pip进行安装?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式测试requirements.txt文件以防止干净的Python安装:

requirements = [r.split('=')[0] for r in open('requirements.txt').readlines()]

for r in requirements:
    r = r.replace('-', '_')
    try:
        exec('import {}'.format(r.lower()))
    except ImportError:
        try:
            exec('import {}'.format(r.upper()))
        except ImportError:
            try:
                exec('import {}'.format(r.capitalize()))
            except ImportError:
                print('{} is not a built-in module'.format(r))

不是我编写的最漂亮的代码,但它完成了工作;)