python绝对路径导入问题
背景
当某个功能是一个包A时使用from cls_pb2 import LogGroupList
没有问题,这个包A在整个项目中运行的话这样是不行的SystemError: Parent module '' not loaded, cannot perform relative import
,除非使用相对路径from .cls_pb2 import LogGroupList
需求
在不改动导入方式的情况下,也使整个项目使用,即from cls_pb2 import LogGroupList
解决
import os
import sys
PACKAGE_PARENT = '.'
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))
from cls_pb2 import LogGroupList