Python无法看到导入modu的所有属性

2024-05-15 01:46:55 发布

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

我有一个关于动态模块导入的问题,以及dir/vars/__dict__如何处理导入的模块。你知道吗

我有以下目录树:

|sv
    |--__init__.py
    |tests
        |----__init__.py
        |some_test
            |----test.py
            |----__init__.py
    |tools
        |----__init__.py
        |SVE
            |----__init__.py
            |prun
                |----__init__.py
                |----prun.py

我正在使用以下命令运行prun.py

python -m sv.tools.SVE.prun.prun

prun.py中,我有以下代码(我将其称为关键代码):

sys.path.insert(1 ,full_path_to_folder)
curr_test = importlib.import_module("test", "sv.tests." + "some_test")
print dir(curr_test)

full_path_to_folder指向ROOT/sv/tests/some_test

这就是sv/tests/some_test/test.py的样子:

import getpass
from sv.tools.SVE.svTest.svTest import Test
import sv.tools.SVE.utils.utils as utils
import sv.tools.SVE.utils.remote_operations as remote_operations


class NewClass(Test):
    pass

在这冗长的序言之后,我的问题是: 我运行prun,使用import\u模块导入test.py,然后使用dir()打印它的内容,结果如下:

['NewClass', 'Test', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'getpass', 'remote_operations', 'utils']

这就是我期望看到的。你知道吗

但是,当我从关键代码中删除第一行,并且不将路径添加到sv/tests/some\u test-to-path时,dir()将打印以下内容:

['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']

里面没有所有的进口测试.py以及其中定义的类。你知道吗

为什么?为什么dir()在我将路径添加到some\u测试时显示得更多? 我尝试使用vars和__dict__,但它们的行为都是一样的。你知道吗


Tags: 模块path代码pytestimportinitdir

热门问题