在其他目录Python中导入包的最佳方法

时间:2017-03-04 02:01:53

标签: python python-3.x

这是我的目录结构

dir1
    dir1f.py

dir2
    dir2f.py
    __init__.py

dir2f.py有一个我想在dir1f.py中导入的类dir2c所以在dir1f.py中我调用了

from ..dir2.dir2f import dir2c

但我收到此错误

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

有什么问题?

1 个答案:

答案 0 :(得分:0)

正如T-Heron指出的那样,很难准确地告诉你在这里做了什么,但如果我不得不冒险猜测我会说你正在运行dir1f .py作为脚本(来自python dir1/dir1f.py目录的ala python dir1f.pydir1),这意味着您不应该使用相对导入。尝试:

from dir2.dir2f import dir2c

更新:如果使用python dir1f.py执行,有几种方法可以:

  1. 首先从顶级目录中尝试python dir1/dir1f.py;或
  2. 将dir2移至dir1并从dir1运行python dir1f.py;或
  3. 阅读PYTHONPATH(环境变量)
  4. 另外:阅读PEP8,尤其是导入部分:

      

    "建议使用绝对导入,因为它们通常更具可读性   并且倾向于表现得更好(或者至少提供更好的错误消息)   如果导入系统配置不正确(例如a   包中的目录最终在sys.path上。"

    - http://pep8.org/#imports

    可能相关,有更多细节:Relative imports in Python 3