PS:之前偷懒直接用了添加系统路径的方法,现在代码越改越多也越杂,而且最近要添加多个配置参数,当我添加完参数发现崩了,服务计算一直失败,还是得用导包的形式,之前稍微用过但是一直模棱两可一知半解,现在知道一旦代码函数多了之后就得用它,希望能比较直观的理解
1.先说下偷懒的方式也就是如下代码:
import sys, os
sys.path.append(os.path.dirname(__file__) + os.sep + 'database/')
如果当前py文件的运行目录是/home/pacs/PycharmProjects/tf,那在当前这个py文件里可以添加过上面代码,就可以在下面代码中直接导入/home/pacs/PycharmProjects/tf/database/下面的文件.这个适合文件比较少的时候临时用用的.
2.导包的形式:
下面是在包在pycharm上打开的格式
LungDetectorClassier是包的顶层,而后每个文件夹下都要放一个__init__.py才能知道这是一个包才能调用文件夹下的文件(LungDetectorClassier文件夹下也要加,就是最后一个__init__.py).
如果我要在db_sqlite3.py文件里调用configg.py(跨文件夹),那么要这么写
from LungDetectorClassier.config import configg
而我要在execute_status_result.py调用db_sqlite3.py(同文件夹下),那么要这么写
from . import db_sqlite3
注意点
如果我们要开启服务的话,不能将调用服务的运行文件放在包里面的文件夹,必须放在包外面如下:
我就是用test_ai.py和test_predict.py来开启服务的.
其中test_ai.py代码如下:
# -*- coding: utf-8 -*-
from LungDetectorClassier.service.ai import AI_algorithm
if __name__ == '__main__':
AI_algorithm()
而test_predict.py类似.