【问题标题】:How can I import a Python class that is in two directories above and one below?如何导入位于上方和下方两个目录中的 Python 类?
【发布时间】:2015-06-25 14:40:42
【问题描述】:

如何从customer_helper_test.py 导入customer_helper.py 中的CustomerHelper 类?这是可能的?我使用了from ..helpers..tests..app.helpers.customer_helper import CustomerHelper,但它的语法无效。

这是整理好的文件夹:

program/
    app/
        helpers/
            customer_helper.py
            __init__.py
    __init__.py
    tests/
        helpers/
            customer_helper_test.py
            __init__.py
        __init__.py
    __init__.py

提前致谢!

【问题讨论】:

    标签: python file class python-2.7 python-3.x


    【解决方案1】:

    始终努力使用绝对导入。

    from program.app.helpers.customer_helper import CustomerHelper
    

    如果由于某种原因你绝对不能,那么

    from ...app.helpers.customer_helper import CustomerHelper
    

    请注意,app 无论如何都必须是一个包。

    【讨论】:

    • 两者都不起作用。第一个解决方案提出ImportError: No module named program.app.helpers.customer_helper 第二个解决方案提出ValueError: Attemped realtive import beyond toplevel package.
    • @JohannGomes 第一个解决方案要求program 在您的PYTHONPATH 中。第二个问题是为什么你不应该使用相对进口!它会失败,具体取决于您从哪里运行。在这种情况下,您需要位于项目根目录 program/ 而不是更深的位置。
    • 现在可以了。我深陷program/tests,这就是它不起作用的原因。谢谢,亚当。
    • @JohannGomes 希望为您加粗斜体“始终努力使用绝对导入”这一行! :)
    • @Adam,为什么不直接编辑你的答案,然后加粗+意大利语 ;-)
    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多