【问题标题】:Best way to import a package located in a sibling directory导入位于同级目录中的包的最佳方法
【发布时间】:2017-12-10 11:38:14
【问题描述】:

我的文件结构是:

top\
   my_package\
      __init__.py
      functions.py
   scripts\
      test.py
   main.py

我想将functions.py的内容导入test.py

main.py 中,我可以导入functions.pyfrom my_package.functions import ...。 我期待能够使用from ..my_package.functions import ... 之类的东西在test.py 中导入functions.py,但它会引发以下错误:

SystemError: Parent module '' not loaded, cannot perform relative import

top 目录不应该是一个包,因为我希望能够在不运行包中的脚本的情况下运行 main.py

test.py导入functions.py的正确/pythonic方式是什么?

我可以将my_package 添加到 PYTHONPATH,但我的代码的可移植性会降低。我正在使用 Python 3.5

【问题讨论】:

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


    【解决方案1】:

    发生这种情况是因为就 python 而言,my_packagescripts 目录彼此不相关。 要解决您的问题,您可以将__init__.py 添加到您的top 目录并尝试使用

    from ..function import *
    

    【讨论】:

    • 如果我在我的top 目录中添加一个__init__.py 文件,它将成为一个包,并且运行main.py 将运行一个不推荐的包中的脚本。我编辑了我的问题以明确 top 不应该是一个包。
    猜你喜欢
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2021-06-08
    相关资源
    最近更新 更多