【问题标题】:Imports within an installed Python package在已安装的 Python 包中导入
【发布时间】:2017-05-21 09:04:48
【问题描述】:

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

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

为了从file1.py 访问file2.py 中的函数,可以这样做

from file2 import fun

或者

from project.file2 import fun

类似地,如果我想从file1.py 访问file3.py 中的函数,我可以使用from project.module.file3 import functionfrom .module.file3 import function

这两个选项似乎是等效的。是否有首选方法,或我缺少的两者之间的相关区别?

【问题讨论】:

    标签: python package python-import python-module


    【解决方案1】:

    虽然这主要是个人喜好问题,但 PEP8 建议使用绝对导入:

    from project.module.file3 import function 
    

    而不是相对导入:

    from .module.file3 import function
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-02
      • 2023-01-08
      • 2021-09-26
      • 1970-01-01
      • 2014-04-09
      • 2014-02-02
      • 2016-02-07
      • 1970-01-01
      相关资源
      最近更新 更多