如何只获取模块名称 ModuleNotFoundError

How to get only the module name ModuleNotFoundError

如何在 Python.

中仅打印带有 ModuleNotFoundError 参数的模块名称

我的代码:

try:
    import requests
except ModuleNotFoundError as error1:
    print(error1)

在这种情况下,我得到如下输出:

>> No module named *'requests'*

我只想打印遇到异常的模块的名称

我需要的输出:

>> 'requests'

由于您已经知道要导入的模块的名称,因此您可以直接编写它

try:
    import requests
except ImportError as ex:
    sys.exit(f"unable to import requests: {repr(ex)} .. you can install it with 'pip install requests')

但是,请注意,这可能是某种形式的 XY Problem

即。为什么未安装请求? (也许您应该捆绑一个 pip_requirements.txt 文件或创建一个 setup.py
Packaging Python Projects Docs

您可以操作字符串来提取模块名称。您可以看到模块名称位于两个单引号之间。知道了这一点,我们就可以用str.index找到这两个索引,提取它们之间的所有数据,得到模块名。

try:
    import blahblahdoesntexist
except ModuleNotFoundError as err1:
    error = str(err1) # turns it into a string
    first = error.index("'")
    last = error.index("'", first + 1)

    print(error[first + 1:last]) # gets the name only.

ModuleNotFoundError 中的模块名称由变量 name

访问
try:
    import this_module_doesnt_exist
except ModuleNotFoundError as error1:
    print(error1.name)

输出:

this_module_doesnt_exist