不关心故事背景的朋友们可以直接跳到“解决方案”~
故事背景
最近在用thrift的时候遇到一个问题,thrift生成的python文件之间的引用都是相对引用的:
thrift_folder
├── base
│ ├── constants.py
│ ├── __init__.py
│ └── ttypes.py
├── model
│ ├── __init__.py
│ ├── constants.py
│ ├── ttypes.py
# model/ttypes.py
import base.ttypes
如果python起始运行文件路径不在thrift_folder内,那么引用就会有错误。
历史方案
老前辈们提供了两种解决方案
- 修改所有的import
- 修改os.path
前者的问题在于,即使用脚本在每个thrift前面写from thrift_folder import base(不能图省事先加一个__all__ = bulabula然后from thrift_folder import *