python-3.x - 解析 python 命名空间包中的相对导入
问题描述
我的python目录结构如下
├── a
│ └── b
│ └── c
│ └── d
│ ├── bar.py
│ └── foo.py
└── sandbox.py
目录a/*
是自动生成的代码,所以假设我无法控制它的结构。
酒吧.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/*
?setuptools
我记得在使用 pythons和安装之前能够实现这一点a
,但不幸的是无法重现它。
解决方案
这不是问题的真正答案,因为它违反了我的问题的限制,所以我不会将其发布为已接受的答案。
如果您能够添加单个文件,则为解决方案。
在里面a/__init__.py
我补充说:
import sys
import os
sys.path.append(os.path.dirname(__file__))
推荐阅读
- android - 致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 4357 中的故障地址 0x1af09f8
- merge - 如果缺少一个变量,则 SAS 合并另一个变量(proc sql 步骤)
- python - 我无法在 anaconda 中启动 jupyter notebook
- java - 找不到可见元素
- ios - iOS:Google Places Pod - 将 pod 版本升级到 3.1.0 后达到使用限制错误
- ruby - 为 REST CRUD 设置 rom-http 关系
- typescript - 为什么 mapStateToProps 有 Eslint 警告“返回承诺的函数必须是异步的”?
- java - 如何在 spring-data-elasticsearch 中将“或”运算符与 CriteriaQuery 一起使用
- python - 如何从 deepchem 的 ConvMol 对象中获取 MOL 对象
- ajax - 如何使用 post 方法发出 ajax 请求