如何列出python3中脚本使用的所有python包

2024-10-02 00:34:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经通读了其中的一些问题,但它们似乎都链接到专门用于python2.x的方法,而我正在python3.x中工作

我有一个python文件,叫它测试.py,它有许多包导入(例如,import numpy as np),但它也导入一些其他文件,我们称它们为subTest1.py和subTest2.py。每个子测试文件都有自己的导入(可能同时包含其他文件和包)。有没有一种自动获取运行路由脚本所需的所有包的列表的方法(测试.py)? 在

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

与Python2.x相似的问题:

Return a list of imported Python modules used in a script?

Get all modules/packages used by a python project

似乎特定于python2.x的包:

蛇食

皮普雷克斯

如果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'

Tags: 文件runinpymainlibpackagestensorflow
2条回答

您可以使用pipreqs包。(Docs

要安装:

pip3 install pipreqs

用法:

^{pr2}$

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

我在google上找到了这个脚本,它似乎在工作,我已经为python3更新了它,(只是print函数), 我已经测试过了,它列出了模块,但我认为它在模块下太深了,但值得一试。在

from modulefinder import ModuleFinder
f = ModuleFinder()

# Run the main script
f.run_script('test.py')

# Get names of all the imported modules
names = list(f.modules.keys())

# Get a sorted list of the root modules imported
basemods = sorted(set([name.split('.')[0] for name in names]))
# Print it nicely
print("\n".join(basemods))

只需更改您要检查的任何文件名中的test.py。 然后从终端运行脚本

^{pr2}$

如果有帮助请告诉我。在

相关问题 更多 >

    热门问题