【发布时间】:2022-02-16 08:10:21
【问题描述】:
我正在尝试运行一个调用另一个 python 文件的脚本(连同其整个 github 存储库一起复制),但我得到了一个 ModuleNotFoundError:
尽管将文件放入正确的目录,但还是会这样。
我如何运行它
- 激活我的python3.9虚拟环境
-
(newpy39) aevas@aevas-Precision-7560:~/Desktop/Dashboard_2021_12$ python3 dashboard.py其中 aevas 是我的用户名,而 ~/Desktop/Dashboard_2021_12 是文件夹
运行它不需要额外的参数。
dashboard.py 的导入
import sys
sys.path.insert(1, 'targetTrack')
# Qt imports
from PyQt5.QtCore import QThread, pyqtSignal
import argparse
import configparser
import platform
import shutil
import time
import cv2
import torch
import torch.backends.cudnn as cudnn
from yolov5.utils.downloads import attempt_download
from yolov5.models.experimental import attempt_load
from yolov5.models.common import DetectMultiBackend
from yolov5.utils.datasets import LoadImages, LoadStreams
from yolov5.utils.general import LOGGER, check_img_size, non_max_suppression, scale_coords, check_imshow, xyxy2xywh
from yolov5.utils.torch_utils import select_device, time_sync
from yolov5.utils.plots import Annotator, colors
from deep_sort_pytorch.utils.parser import get_config
from deep_sort_pytorch.deep_sort import DeepSort
第 1 部分:未找到模型,尽管模型是父文件夹。
python3 dashboard.py
Traceback (most recent call last):
File "/home/aevas/Desktop/Dashboard_2021_12/dashboard.py", line 25, in <module>
from trackerThread import trackerDeepSORT
File "/home/aevas/Desktop/Dashboard_2021_12/trackerThread.py", line 15, in <module>
from yolov5.models.experimental import attempt_load
File "/home/aevas/Desktop/Dashboard_2021_12/targetTrack/yolov5/models/experimental.py", line 14, in <module>
from models.common import Conv
ModuleNotFoundError: No module named 'models'
第 2 部分:将 import models.common 更改为 import common 后,发现即使在同一个文件夹中也找不到 common!
python3 dashboard.py
Traceback (most recent call last):
File "/home/aevas/Desktop/Dashboard_2021_12/dashboard.py", line 25, in <module>
from trackerThread import trackerDeepSORT
File "/home/aevas/Desktop/Dashboard_2021_12/trackerThread.py", line 15, in <module>
from yolov5.models.experimental import attempt_load
File "/home/aevas/Desktop/Dashboard_2021_12/targetTrack/yolov5/models/experimental.py", line 14, in <module>
from common import Conv
ModuleNotFoundError: No module named 'common'
这就是experimental.py的导入部分的样子
# YOLOv5 ???? by Ultralytics, GPL-3.0 license
"""
Experimental modules
"""
import math
import numpy as np
import torch
import torch.nn as nn
from common import Conv
from utils.downloads import attempt_download
我已经查阅了以下链接,但无济于事:
- https://towardsdatascience.com/how-to-fix-modulenotfounderror-and-importerror-248ce5b69b1c
- Python can't find module in the same folder
- ModuleNotFoundError: No module named 'models'
- https://github.com/ultralytics/yolov5/issues/353
我明白了,可以改成import .common,然后模块就可以成功导入了。但是,下一行 import utils 会导致类似的错误。 utils 与 models 处于同一级别。这意味着将以这种速度出现一连串的moduleNotFoundError 错误。我也明白使用folder ()方法是不可取的,因此我没有继续使用它。
正如我所提到的,我已经复制了整个克隆的 github 存储库,当独立执行时,github 存储库工作得非常好。 experimental.py 没有区别。
可能出了什么问题?
【问题讨论】:
-
您能否提供运行脚本的确切方式?您正在运行什么命令,从哪个目录中运行它?因为它决定了 Python 将如何进行导入。
-
@Lenormju 你好,我已经添加了我如何运行它的描述。希望它能阐明您的需求!