目录结构:
utils.py
:
python
import random
def select_Jrandom(i:int, m:int) -> int:
"""
随机选择一个不等于 i 的整数
"""
j = i
while j == i:
j = int(random.uniform(0, m))
return j
def clip_alpha(alpha_j:float, H:float, L:float) -> float:
"""
修剪 alpha_j
"""
if alpha_j > H:
alpha_j = H
if alpha_j < L:
alpha_j = L
return alpha_j
smoSimple.py
python
from utils import (
select_Jrandom,
clip_alpha)
import numpy as np
import pdb
...
在vscode中导入utils
模块时,导入后不显示类型注解。
但是以.utils
形式导入就有注解:
但是,以.uitls
导入后,运行python smoSimple.py
就会报错
报错信息为:
shell
File "E:\Graduate\ML_PDE\ML\SVM\smoSimple.py", line 1, in <module>
from .utils import (
ImportError: attempted relative import with no known parent package
以python -m smoSimple.py
报错信息:
shell
(base) PS E:\Graduate\ML_PDE\ML\SVM> python -m .\smoSimple.py
E:\Anacoda_store\python.exe: Relative module names not supported
当我将目录utils
改个名字后,发现就有类型注解。
综上,应该是两个utils
的存在,导致vscode不能智能选择哪个而产生错误。