- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下文件夹结构,并且在 util.py 中有一个测试方法。运行 util 方法时,我看到在我试图获取所有类的模块中导入的模块出现错误。
Parent
--report <dir>
----__init__.py
----AReport.py
----names_list.py
--util.py
import inspect
import importlib
import importlib.util
def get_class_names(fileName):
for name, cls in inspect.getmembers(importlib.import_module(fileName, package='report'), inspect.isclass):
print(name, cls)
if __name__ == '__main__':
get_class_names('report.names_list')
from AReport import AReport
class Team:
name = ""
def __init__(self, name):
self.name = name
class Names_List(AReport):
def __init__(self, name=None):
AReport.__init__(self, name)
def test(self):
print('In test')
from abc import ABCMeta, abstractmethod
class AReport(metaclass=ABCMeta):
def __init__(self, name=None):
if name:
self.name = name
def test(self):
pass
ModuleNotFoundError: No module named AReport
最佳答案
假设您没有对 sys.path
进行任何更改或与 PYTHONPATH
,问题是 AReport
模块在 util.py 中不“可见”。
您可以通过在 util.py
的顶部添加来检查这一点:
import sys
print(sys.path)
这将打印出解释器将查找模块的所有路径的列表。您会看到只有
Parent
的路径模块在那里,因为这是
util.py
被跑了。这在
The Module Search Path 中有解释。文档:
When a module named
spam
is imported, the interpreter first searchesfor a built-in module with that name. If not found, it then searchesfor a file namedspam.py
in a list of directories given by thevariablesys.path
.sys.path
is initialized from these locations:
- The directory containing the input script (or the current directorywhen no file is specified).
PYTHONPATH
(a list of directory names, with the same syntax as theshell variablePATH
).- The installation-dependent default.
util.py
从父目录(=“包含输入脚本的目录”),你做
from AReport import AReport
它将寻找
AReport
父目录中的模块,但它不存在,因为只有
report
包直接在/path/to/Parent 目录下。这就是 Python 提出
ModuleNotFoundError
的原因。 .如果你这样做
from report.AReport import AReport
它会起作用,因为
report
包位于/path/to/Parent 下。
report.
导入时的前缀,一种选择是添加
report
打包到
sys.path
在
util.py
:
import sys
sys.path.append("./report")
print(sys.path)
# should now show the /path/to/Parent/report on the list
然后你的
from AReport
导入现在可以工作了。另一种选择是将/path/to/Parent/report 添加到您的
PYTHONPATH
运行前的环境变量
util.py
.
export PYTHONPATH=$PYTHONPATH:/path/to/Parent/report
我通常选择
PYTHONPATH
测试选项,所以我不需要修改代码。
关于python - 使用 importlib.import_module 时出现 ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603077/
我正在尝试基于 imp 重新实现一些代码要使用的模块importlib反而。 imp.find_module 函数之间存在细微差别和 importlib.find_loader : # Using i
我是 Django 新手。我有一个 Django 休息项目。当我运行它时,错误显示为 from django.utils.importlib import import_module ImportEr
我收到了一份。在Spyder中第二次从子文件夹导入库时出错,但第一次(重新启动Spyder后)或在Spyder外导入时工作正常。。代码是:。其中,test_lib.py只是。输出结果为:。当库不在子文
from importlib.machinery import EXTENSION_SUFFIXES 导入错误:没有名为machinery的模块 清理中...命令 python setup.py Eg
pytest-6.0介绍a new 'import-mode' option dubbed 'importlib'连同声明: "We intend to make importlib the defa
我正在尝试导入 importlib 模块,但收到此消息: >>> importlib Traceback (most recent call last): File "", line 1, in N
鉴于此代码,我如何告诉 python 不使用缓存源或重新加载? import importlib.util spec = importlib.util.spec_from_file_location(
我正在尝试从不同的 python 文件 (*.py) 导入名为“tasks”的字典。 路径存储在我的数组directories['code']中。并非所有文件都包含这些任务指令之一。 问题是,一旦找到
我正在使用 flask 并具有以下结构 manage_server.py cas --- __init__.py --- routes.py --- models.py --- templates
这个问题在这里已经有了答案: from django.utils.importlib import import_module ImportError: No module named import
一旦你导入了 foo 模块,其中你有 bar 类 import importlib foo = importlib.import_module('path/to/foo') 如何简单地调用 bar.r
这个问题在这里已经有了答案: TypeError: Missing 1 required positional argument: 'self' (8 个答案) 关闭 2 年前。 我知道类似的问题已
我正在寻找一种使用 importlib 的方法在 Python 2.x 中即时重写导入模块的字节码。换句话说,我需要在导入期间在编译和执行步骤之间 Hook 我自己的函数。除此之外,我希望导入功能能够
使用 import 语句导入具有本地名称的模块很容易: import numpy as np 我相信 np 在这里被称为“本地名称”,但我可能会混淆。 我不知道如何使用 importlib 模块来做同
我想根据传递给 Python 脚本的参数在我的主函数中选择要导入的模块。所以,我正在使用其中之一 blah = importlib.import_module("blah1") blah = impo
根据 this answer , 你可以使用 importlib 到 import_module 使用像这样的相对导入: importlib.import_module('.c', 'a.b') 为什
第二个断言失败,表明importlib.reload静静地重新加载修改后的模块失败,谁能解释为什么? import os import sys import tempfile import impor
我希望在 Python (3.7) 中动态导入一个模块,模块的代码是在一个字符串中定义的。 下面是一个使用 imp 模块的工作示例,该模块已被弃用,取而代之的是 importlib(从版本 3.4 开
第二个断言失败,表明importlib.reload静静地重新加载修改后的模块失败,谁能解释为什么? import os import sys import tempfile import impor
在我的模块中,我有几个函数依赖于启动时间较长的外部模块。如何使用 LazyLoader ?如果我有 import veggies 或 import veggies.brussels.sprouts 或
我是一名优秀的程序员,十分优秀!