在已安装的Python包中导入

时间:2017-01-06 15:06:12

标签: python package python-import python-module

考虑已安装的Python包的以下目录结构:

project/
    project/
        __init__.py
        file1.py
        file2.py
        module/
            __init__.py
            file3.py
    setup.py

要从file2.py访问file1.py中的某个功能,可以执行

from file2 import fun

或者

from project.file2 import fun

类似地,如果从file1.py我想访问file3.py中的某个功能,我可以from project.module.file3 import functionfrom .module.file3 import function

这两个选项似乎是等价的。是否有一种首选方法,或两者​​之间的相关差异?

1 个答案:

答案 0 :(得分:2)

虽然这主要取决于个人偏好,但PEP8建议使用绝对导入:

from project.module.file3 import function 

而不是相对进口:

from .module.file3 import function

绝对导入更具可读性和更好的行为(失败时更好的错误消息)。但是,当使用绝对导入变得不必要地冗长(使用您的判断)时,使用相对导入是可接受的替代方案。请参阅导入时的PEP8 documentation