python跨文件调用函数

Project01

        test01.py

def plustest(num1, num2):
    return num1 + num2
#
if __name__ == '__main__':
    print(plustest(2, 3))

Project02

        test02.py,该文件里面有函数:def plustest()

现在想在test02.py文件内调用test01.py文件内的函数 plustest

实现如下(test02.py内容如下):

import os
Project02_path= os.path.dirname(os.path.abspath(__file__))
Project01_path= os.path.join(test01_path, r'D:\DeskTop\Project01')
import math
import sys

if Project01_path in sys.path:
    sys.path.append(Project01_path)
    print("添加完成")

import test01


print(test01.plustest(11, 22))

此时 import plus_num 会报错,有红色下划线提示错误,不用理会,这是应为程序还未执行,系统检查不到模块,正常运行不会报错

进阶版:跨文件调用“类”

跨文件调用YOLO检测算法

由于YOLO模块在算法中是类的名称,因此会和上面介绍的有一点差异

import os
import sys

train_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

yolo_path = os.path.join(train_path, r'D:\DeskTop\ultralytics-v8.3\ultralytics\models\yolo')

if yolo_path not in sys.path:
    sys.path.append(yolo_path)
    print("添加完成")

os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"


from model import YOLO

test_model = YOLO(r"D:\DeskTop\ultralytics-v8.3\ultralytics\cfg\models\11\yolo11n.yaml").load(r"D:\DeskTop\ultralytics-v8.3\yolo11n.pt")


result = test_model.train(data=r"G:\DeskTop\Test_Annotation\coco.yaml",
                     epochs=100,
                     imgsz=(512, 512),
                     device=0,
                     batch=2,
                     workers=0
                     )

唯一的区别多嵌套了一层os.path.dirname()

train_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

这里from model import YOLO 也会提示错误,不要理会,原理同上,可以正常运行

因为YOLO类是yolo问价夹下model.py里的类,因此要找到YOLO类的文件的上层文件进行添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值