我有以下目录结构:
count/
|__init__.py
|count_by_line.py
ultralytics/
|__init__.py
|some_module.py
command/
|__init__.py
|save_image.py
我想使用
from ultralytics import YOLOv10
行导入 YOLOv10,但它会抛出此错误:
Traceback (most recent call last):
File "/home/aitraining/sun/application_alarm_ver_1/yolov10/count/count_by_line.py", line 7, in <module>
from ultralytics import YOLOv10
ImportError: cannot import name 'YOLOv10' from 'ultralytics' (/home/aitraining/sun/application_alarm_ver_1/app_alarm/lib/python3.10/site-packages/ultralytics/__init__.py)`
行
from csv_command import csv_manage,save_image
也会抛出此错误:
Traceback (most recent call last):
File "/home/aitraining/sun/application_alarm_ver_1/yolov10/count/count_by_line.py", line 10, in <module>
from csv_command import csv_manage,save_image
ModuleNotFoundError: No module named 'csv_command'
这段代码也没有改变任何东西:
import sys
import os
sys.path.append(r"yolov10")
import YOLOv10
from ultralytics import YOLOv10
from csv_command import csv_manage,save_image
如何使这些导入正确工作?
当您尝试导入的模块在指定的位置不存在或者导入方式存在问题时,通常会出现错误 ImportError:无法导入名称“YOLOv10”。
解决方案:
确保 YOLOv10 实际上是在 ultralytics/some_module.py 或 ultralytics 包中的另一个模块中定义的。 在 ultralytics/init.py 文件中,如果在 some_module.py 中定义了 YOLOv10,则应确保正确导入它。 例如,如果在 some_module.py 中定义了 YOLOv10,则应将 init.py 修改为:
从.some_module导入YOLOv10
从 csv_command 导入时出错:
错误 ModuleNotFoundError: No module named 'csv_command' 表示 Python 找不到模块 csv_command。这可能是因为您的文件夹实际上名为 command,而不是 csv_command。
解决方案:
在导入语句中将模块名称更正为命令,如下所示: 蟒蛇:
从命令导入 save_image 或者,如果文件夹应为 csv_command,请将命令/目录重命名为 csv_command/。
在脚本中,确保将父目录添加到 sys.path 中:
蟒蛇:
导入系统 导入操作系统
sys.path.append(os.path.dirname(os.path.abspath(file)) + "/..")
从 ultralytics 导入 YOLOv10 从命令导入 save_image 这将帮助Python找到ultralytics和命令模块。
count_by_line.py 的最终结构: Python 复制代码 导入系统 导入操作系统
sys.path.append(os.path.dirname(os.path.abspath(file)) + "/..")
from ultralytics import YOLOv10 # 确保它在 ultralytics 包中正确定义 from command import save_image # 确保您使用正确的模块名称