这几天碰到一个问题,运行脚本的时候__init__.py部分报错了,正好自己对这块不了解,就记录解决的过程,分享给大家!
操作步骤:
1、我的文件结构:
Project/
testcases/
__init__.py
getuser_test.py
save_test.py
2、在 getuser_test.py 里,定义了一个 TestCaseGetuser 的 Class 类:
# in getuser_test.py
class TestCaseGetuser():
pass
3、然后在 save_test.py 里,我导入了该类:
# in save_test.py
from testcases import TestCaseGetuser
4、运行 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你正在加载的模块位于当前模块的目录内。
init.py 是做什么的?
平时,看一些 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)
\