这几天碰到一个问题,运行脚本的时候__init__.py部分报错了,正好自己对这块不了解,就记录解决的过程,分享给大家!
1、我的文件结构:
Project/ testcases/ __init__.py getuser_test.py save_test.py2、在 getuser_test.py 里,定义了一个 TestCaseGetuser 的 Class 类:
# in getuser_test.py class TestCaseGetuser(): pass3、然后在 save_test.py 里,我导入了该类:
# in save_test.py from testcases import TestCaseGetuser4、运行 save_test.py 时,报错
from testcases import TestCaseGetuser ImportError: cannot import name 'TestCaseGetuser' from 'testcases' (D:\Test\Project\testcases\__init__.py)
Python 3.x:
# in __init__.py from.getuser_test import TestCaseGetuser在模块名称前放置一个.,可以告诉Python你正在加载的模块位于当前模块的目录内。
平时,看一些 Python 相关的项目时,常常会看到 __init__.py,当你使用某些编辑器创建 Python Package 的时候,它也会自动给你生成一个 __init__.py 文件。 下面我们就看看__init__.py 到底是做什么用的。
有两个主要用途:
1、为方便起见:其他用户不需要知道你的函数在包层次结构中的确切位置。
your_package/ __init__.py file1.py file2.py ... fileN.py # in __init__.py from file1 import * from file2 import * ... from fileN import * # in file1.py def add(): pass其他人可以通过以下方式调用add():
from your_package import add知道 add()位置的话,可以:
from your_package.file1 import add
2、如果你想初始化一些东西;例如,日志记录(应放在顶层):
# in __init__.py import logging.config logging.config.dictConfig(Your_logging_config)