我正在使用python 3.4.4并测试" init.py"功能通过创建示例包但无法实现。在python 2.7.13版本的情况下,上面提到的案例非常有效。任何人都可以告诉我我正在做的错误或python 3.x版本的语法有任何变化。请帮我学习Python 3?
目录结构:
TestPackage/
__init__.py
TestModule.py
run.py
TestModule.py的内容:
def TestFun():
print("Welcome")
__init__.py的内容:
from TestModule import TestFun
run.py的内容:
from TestPackage import TestFun
TestFun()
当我执行run.py文件时,我收到以下错误:
Traceback (most recent call last):
File "D:\CASE03\run01.py", line 1, in <module>
from TestPackage import TestFun
File "D:\CASE03\TestPackage\__init__.py", line 1, in <module>
from TestModule import TestFun
ImportError: No module named 'TestModule'
但是当我使用python 2.7.13时,它的工作原理非常好。请指导我。
答案 0 :(得分:3)
__init__.py
内部,如果您更改
from TestModule import TestFun
到
from .TestModule import TestFun
您将获得预期的行为。
请参阅:PEP 328(关于使用前导点的相对导入的部分)。
答案 1 :(得分:1)
尝试将__init__.py
更改为以下代码:
from TestPak.TestModule import TestFun
答案 2 :(得分:0)
最简单的解决方案是将__init__.py
设置为空白文件。如果您有兴趣在执行from Testmodule import *
时控制从模块导入的内容,则可以在__all__ = ['TestFun']
文件中加入__init__.py
。