'pip install -e' 项目名称出错 "yolov3"

'pip install -e' gives error with project name "yolov3"

我今天第一次使用命令参数 -e 使用 pip install -e path/to/project 安装了几个可编辑状态的依赖项。

对于第一个依赖项,项目 sort,一切正常。

但是对于其他依赖项,项目 yolov3 事情并没有那么好,尽管我使用了完全相同的命令:

安装

(torch) user@user-PC:~/Code/Project$ pip install -e Detection/yolov3/

检查

(torch) user@user-PC:~/Code/Project$ pip show yolov3
Name: yolov3
Version: 1.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Location: /home/user/Code/Project/Detection/yolov3
Requires: 
Required-by: 

使用

from sort import Sort    
from yolov3 import get_detections_from_single_frame as get_detections

dummy_frame = None    
mot_tracker = Sort()    
track_bbs_ids = mot_tracker.update(get_detections(dummy_frame))

但是我得到一个错误

(torch) user@user-PC:~/Code/Project$ python main.py
Traceback (most recent call last):
  File "main.py", line 10, in <module>
    from yolov3 import get_detections_from_single_frame as get_detections
ModuleNotFoundError: No module named 'yolov3'

我曾尝试将名称更改为 yolo 以消除模块名称中的数字,但没有成功,但我可能无法更改项目名称本身。

这是我在项目 yolov3 中使用的 setup.py(我使用相同的排序,除了名称 属性 原因很明显):

from setuptools import setup, find_packages

setup(name='yolov3', version='1.0', packages=find_packages())

这里是 project structure:

yolov3/
├── __init__.py
├── models/
|   ├── __init__.py
|   ├── liba1.py
|   ├── liba2.py
|   ├── liba3.py
├── utils/
|   ├── __init__.py
|   ├── libb1.py
|   ├── libb2.py
|   ├── libb3.py
└── weights/
    └──  libc1.py

有人可以告诉我我错过了什么吗?

PS:

按照 Haller Patrick 的建议,修改项目结构消除了原始错误消息。

yolov3/
├──  yolov3/
|    ├── __init__.py
|    ├── models/
|    |   ├── __init__.py
|    |   ├── liba1.py
|    |   ├── liba2.py
|    |   ├── liba3.py
|    ├── utils/
|    |   ├── __init__.py
|    |   ├── libb1.py
|    |   ├── libb2.py
|    |   ├── libb3.py
|    └── weights/
|        └──  libc1.py
|
└── setup.py

但是在更深的文件夹级别出现了一条消息:

Traceback (most recent call last):
  File "/home/user/Code/Project/main.py", line 10, in <module>
    from yolov3.detect import get_detections_from_single_frame as get_detections
  File "/home/user/Code/Project/Detection/yolov3/yolov3/detect.py", line 9, in <module>
    from models.experimental import attempt_load
ModuleNotFoundError: No module named 'models'

要获得准确的答案,您必须提供包的项目结构 yolov3。但我想问题是包 yolov3 不包含要构建的模块。

最小的项目结构必须如下所示:

yolov3/
├── yolov3/
│   ├── __init__.py
│   ├── lib1.py
│   ├── ...
│   └── ...
├── setup.py

重要的是 __init__.py 文件,因此 yolov3 可以作为模块导入。这对我有用。

作为参考,这里有一个使用这种结构的 python 包:https://github.com/gruns/icecream