所以,我有一个如下的项目结构。
Project
|
|--- Module1
|----- __init__.py
|----- A.py
|----- 1B.py
|---- update()
|--- Module2
|----- __init__.py
|----- C.py
|----- D.py
|--- Tests
|----- Test1.py
我对python中的模块化结构非常陌生。因此,我所看到的所有示例都将 init .py作为空文件。我想需要将Module1设为module
。
我正在尝试将A.py
中的Test1.py
导入
1B.py
具有类B
,其类具有方法update(self,x)
。 1B.py
文件名是有意的,因为我想知道如何导入以数字开头的文件和以字母开头的文件。
如何导入来自1B.py
的{{1}},然后使用Module1
方法
update
我尝试了import sys
sys.path.insert(0,"../")
class Test1(unittest.TestCase):
def test_update(self):
target = __import__("Module1.1B",fromlist=[])
print(target.Solution)
并抛出错误,因此我使用了 import
当我打印from Module1.1B ...
<module 'Module1' from '..\\Module1\\__init__.py'>
的位置
这是否意味着我可以成功访问模块target
?
为使此工作正常进行,我在路径中添加了sys.path.insert,以便它可以引用父文件夹。
我要做的是为我的测试文件中的每个类或函数提供专用的测试功能。
我不确定我在做什么错。
答案 0 :(得分:1)
建议使用import_lib.import_module而不是__import__
。根据文档的指定,您可以使用绝对或相对术语指定name参数。
此外,您不需要使用sys.path.insert
:只需使用python -m pkg.script_name
调用测试脚本(忽略.py
)。
答案 1 :(得分:0)
只要您的包位于将要调用主函数的目录中,就可以导入该类,创建它的实例,然后调用该方法。另外,包含 init 文件的目录也称为包,而您的单个文件(例如A和1B)也称为模块。
from Module1 import 1B.B
bclass = B()
bclass.update()
另外,您的 init .py文件也应导入所需的模块
import Module1.A
import Module1.1B