python3 的进口变化

change in import in python3

我正在使用 python 3.4.4 并通过创建示例包来测试 "init.py" 功能,但无法实施。上述案例在 python 2.7.13 版本的情况下运行良好。谁能告诉我我正在做的错误,或者 python 3.x 版本的语法是否有任何变化。请帮我学习一下Python3?

目录结构:

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 时,它工作得很好。请指导我。

最简单的解决方案是将__init__.py设置为空白文件。如果您有兴趣在执行 from Testmodule import * 时控制从模块导入的内容,您可以在 __init__.py 文件中包含 __all__ = ['TestFun']

__init__.py里面,如果你改变

from TestModule import TestFun

from .TestModule import TestFun

您将获得预期的行为。

参见:PEP 328(关于使用前导点的相对导入的部分)。

尝试将 __init__.py 更改为以下代码:

from TestPak.TestModule import TestFun