记录python相对路径导包时报错:ImportError: attempted relative import with no known parent package解决方案

# /app >
# 项目代码目录结构如下:
|python_project
    |-__init__.py
	|-apps
    	|-__init__.py
    	|-run.py
	|-utils
    	|-__init__.py
    	|-MysqlHelper.py

在apps/run.py 代码如下

from utils import MysqlHelper

cd切换到项目路径,使用命令python3 apps/run.py启动程序,出现导包错误如下:
ImportError: attempted relative import with no known parent package

解决方案:
在导包之前先判断一下python的搜索路径列表里面有没有项目路径, 当我使用命令python3 apps/run.py启动程序,python的搜索路径列表获取到的项目路径是/app/python_project/apps 而不是项目根路径/app/python_project/ 因此当使用绝对路径来执行部程序时就需要将项目根路径添加到sys.path中, 如下所示,这样就可以解决这个导包问题了

import sys

# sys.path是python的搜索模块的路径集,是一个list
print(sys.path)
sys.path.append('/app/python_project/')
from utils import MysqlHelper

你可能感兴趣的:(python,开发语言)