不想把代码都堆到一个文件里面,希望写的分层次,但又不是web框架,有入口文件和目录规则,
这个时候就要自己分包了,会遇到这个问题,明明ide智能追踪可以定位到包引用,但是却报错module undefine, 这是因为所需模块没有在当前文件的sys.path 下,可以打印下看看。
同时也梳理下同级模块,上下级模块应该如何引用
同级
import xxx
下级
需要在下级目录中写一个__init__.py文件
在导入的文件写上:
from dirname import xxx
上级:
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(file))))
from fatherdirname import xxx
最后附上一个例:
![在这里插入图片描述(https://img-blog.csdnimg.cn/758f14d8383a4a8a89b5d41ed46d7be0.png)
model/input_params.py 引入了 util_help/util_help_func.py
运行input_params.py 时需要在文件头加入util_help_func.py的文件路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from util_help.util_help_func import check_params_before_biz, get_error_msg_row,get_error_msg_list
整体代码如下
import os
import math
import enum
import json
import numpy as np
import pandas as pd
import sys
from constant_map import LEAST_SAMPLE_SITE_COUNT, MIN_TREE_COUNT_PER_SMALL_CLASS_NO, POS_LIST,FOREST_TYPE_LIST,VEGETATION_TYPE_LIST,ZOO_LIST,SMALL_CLASS_AREA
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from util_help.util_help_func import check_params_before_biz, get_error_msg_row,get_error_msg_list