【问题标题】:Resolving relative imports within python namespace packages解析 python 命名空间包中的相对导入
【发布时间】:2020-09-15 05:40:58
【问题描述】:

我的python目录结构如下

├── a
│   └── b
│       └── c
│           └── d
│               ├── bar.py
│               └── foo.py

└── sandbox.py

目录a/* 是自动生成的代码,因此假设我无法控制它的结构。

bar.py

def toto():
    pass

foo.py(故意不从 a 导入)

from b.c.d.bar import toto

def baz():
    pass

沙盒.py

from a.b.c.d.foo import baz


if __name__ == '__main__':
    baz()

代码以ModuleNotFoundError: No module named 'b' 执行。有没有办法在不对a/* 进行任何更改的情况下解决此错误?我记得在使用 pythons setuptools 并安装 a 之前能够实现这一点,但不幸的是无法重现它。

【问题讨论】:

    标签: python-3.x package


    【解决方案1】:

    这不是问题的真正答案,因为它违反了我的问题的限制,所以我不会将其发布为已接受的答案。

    如果您能够添加单个文件,则为解决方案。

    a/__init__.py里面我加了:

    import sys
    import os
    sys.path.append(os.path.dirname(__file__))
    

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 2013-01-20
      • 1970-01-01
      • 2011-09-06
      • 2017-01-25
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2012-08-26
      相关资源
      最近更新 更多