我有一个关于动态模块导入的问题,以及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__
,但它们的行为都是一样的。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐