【遇到的问题】
导入yolov5中有utils文件,自己的代码中也有utils文件,使得yolov5中的这部分引用出错了。
【解决方案】
单独建立detection文件夹,把检测相关的都放在这里,yolov5是github上拉取的源码,发现yolov5中from utils import...有下划线,且会认为是edgeserver里的utils。
【方法1】选中yolov5文件夹,右键设定成“marked directory as sources root”, 修改后,detection.py执行没有问题,但是外面调用detection时,就会报错。
【方法2】把yolov5中各个子文件夹中, 引用utils文件的地方,全部改成加上前缀EdgeServer.detection.yolov5., 相当于直接改成了绝对路径,虽然繁琐,但是一劳永逸,也无需设置成source root.
【知识补充】
1、package, 显示为文件夹上带一个点
每个里面都有一个__init__.py, 虽然内容为空。通过添加它,Python 会将目录视为包含包,使这部分模块对其他目录可见,因此能够通过from 。。。import。。。被导入。
2、directory, 显示为普通文件夹
Dictionary在pycharm中是一个文件夹,放置资源文件等,该文件夹其中并不包含_ _ init.py_ _文件
3、sources root,显示为蓝色文件夹
指定一个文件夹,你告诉IntelliJ IDEA,这个文件夹及其子文件夹中包含的源代码,可以编译为构建过程的一部分。PyCharm使用Source roots作为解析导入(import)的起点,也就是说,当你在代码中写相对路径的时候,就是以source root为起点进行查询。
4、resources root,显示为橘色下标的文件夹
用于应用程序中的资源文件(图像、各种配置XML和属性文件等)。在构建过程中,资源文件夹的所有内容都复制到输出文件夹中。
5、Excluded roots (shown as ) are ones that PyCharm “almost ignores”.