更改python3中的导入

时间:2018-06-08 02:54:36

标签: python python-3.x python-2.7 import python-import

我正在使用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时,它的工作原理非常好。请指导我。

3 个答案:

答案 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