由于引用第三发源代码总是或多或少的需要去修改. 将第三方的源代码引入之后一般都是放在源代码下面某个目录下.
例如我会将其它第三方的神经网络都放在nn下面.
但是,主项目引入 nn下面的目录中的文件时, 会报错提示找不到 module
ModuleNotFoundError: No module named 'nn.Pytorch_DeepLabV3Plus.modeling.modeling'
作为一个独立的项目时, 第三方的源代码不会把自己写成相对路径的 引用方式.
这个时候最合适的方法是用 sys.path 来解决第三方源代码的 import 问题.
做法是在第三方源代码第一个会被运行的地方, 加入下面的代码
import sys
import os
sys.path.append(os.path.dirname(__file__))
这样第三方源代码怎么写都不影响 import
无论是第三方源代码自主运行, 还是被别的代码引用, 都不需要修改源代码的引用
当然也可以自己手动在自己的主程序中依次加入自己的路径. 例如
import sys
import os
sys.path.append(os.path.dirname(__file__)+'/nn/unet') # 确保第三方源代码可以正常import
sys.path.append(os.path.dirname(__file__)+'/nn/yolov5')# 确保第三方源代码可以正常import
sys.path.append(os.path.dirname(__file__)+'/nn/maskrcnn')# 确保第三方源代码可以正常import
import nn.unet
import nn.yolov5
import nn.maskrcnn
def main():
print("引入第三方的源代码")
个人建议在自己的主程序中增加, 这样可以一目了然的知道你引入了多少第三方的源代码.