加载中...
不想等待可以点我关掉

常用快捷键

shift tab 取消缩进

Python Pylance 找不到包

1
2
3
4
5
6
7
8
{
"python-envs.defaultEnvManager": "ms-python.python:conda",
"python-envs.defaultPackageManager": "ms-python.python:conda",
"python.defaultInterpreterPath": "/home/aaa/miniforge3/envs/bbb/bin/python",
"python.analysis.extraPaths": [
"/xxx/ultralytics"
]
}

python 包目录重名导致无法导入

1
2
3
4
5
6
7
8
9
10
11
12
从 /mnt/d/aaa/ 目录运行 run.py 时,Python 会把当前目录(空字符串 '')加入
sys.path。当前目录下恰好有一个名叫 ultralytics 的目录(即 git 仓库根目录),但该目录没有
__init__.py,所以 Python 将其识别为 namespace package,其 loader=None,origin=None(即 unknown
location)。这个 namespace package 抢在 editable install 的正确包之前被找到,自然没有 YOLO
这个导出。

而在其他目录运行时,没有同名的 ultralytics 目录干扰,editable install 能正确解析到
/mnt/d/aaa/ultralytics/ultralytics/__init__.py。

解决方案

最简单的修复方式:在 run.py 开头移除当前目录的 sys.path 优先级,避免 namespace package 冲突: