Python中的相对导入正确的语法和要求

时间:2014-12-24 03:30:48

标签: python

我知道这匹马已被无数次鞭打过,但没有一个答案回答我的问题

我的文件夹结构如下

/pdocs
    __init__.py (empty)
    file1.py
    tester.py
    Test/
        __init__.py (empty)
        file2.py

file1.py如下

class file1:
    def sayhi():
        print "hi from parent"

file2.py如下

from ... import file1
class file2:
    def sayhitoo():
        print "Hi from child"

tester.py如下

from Test.file2 import file2
sayhi()
sayhitoo()

尝试运行tester.py我得到

"from ... import file1"
"ValueError: Attempted relative import beyond toplevel package"

这是什么意思。我应该改变什么?

1 个答案:

答案 0 :(得分:2)

您正试图从"两个级别导入" - ...中的三个点是什么意思。您只需从一个级别进行导入,因此请改用..

还有其他问题 - 例如,导入file2后,您可以拨打file2.sayhitoo(),但您尝试拨打的是裸字 (不合格的)sayhitoo,它不会工作(我预测NameError)。同样,平方,试图调用赤字sayhi。但是,除了您要问的问题之外,这些还有其他错误: - )。