首页 > 解决方案 > 如何列出python3中脚本使用的所有python包

问题描述

我已经阅读了其中一些问题,但它们似乎都链接到专门用于 python 2.x 的方法,而我正在使用 python 3.x。

我有一个 python 文件,称之为 test.py,它有许多包导入(例如 import numpy as np),但它也导入了一些其他文件,我们称之为 subTest1.py 和 subTest2.py。每个 subTest 文件都有自己的导入(可能包括其他文件和包)。是否有一种自动化的方式来获取运行路由脚本(test.py)所需的所有包的列表?

我知道 pip freeze 会显示我安装的每个包,但这不是我要寻找的 - 可能安装了一个不需要运行 test.py 脚本的包。

类似但 python 2.x 的问题:

返回脚本中使用的导入 Python 模块的列表?

获取python项目使用的所有模块/包

似乎特定于 python 2.x 的软件包:

蛇食

pipreq

pipreqs 失败的地方:

Traceback (most recent call last):
  File "c:\anaconda36\envs\tensorflow\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\anaconda36\envs\tensorflow\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Anaconda36\envs\tensorflow\Scripts\pipreqs.exe\__main__.py", line 9, in <module>
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 396, in main
    init(args)
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 341, in init
    extra_ignore_dirs=extra_ignore_dirs)
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 91, in get_all_imports
    raise exc
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 77, in get_all_imports
    tree = ast.parse(contents)
  File "c:\anaconda36\envs\tensorflow\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 49
    print vsize
              ^
SyntaxError: Missing parentheses in call to 'print'

标签: pythonpython-3.x

解决方案


你可以使用pipreqs包。(文档

安装:

pip3 install pipreqs

用法:

pipreqs ./your_script_directory

它会requirements.txt在您的脚本目录中生成一个文件,其中包含所有使用的依赖项。


推荐阅读