VS 代码导入错误

Import errors on VS code

我是 VS 代码的新手。我已经下载了一个 git 项目,其中包含我可以 运行.

的演示程序

目录结构如下:

Projectparser

>demo
>>alg1_demo.py
>>alg2_demo.py
>>alg3_demo.py

>Projectparser

>>alg1
>>>__init__ [ Has just one line : from alg1 import * ]
>>>alg1.py
>>>calg1.c
>>>calg1.h

>>alg2
>>>__init__ [ Has just one line : from alg2 import * ]
>>>alg2.py
>>>calg2.c
>>>calg2.h

>>alg3
>>>__init__ [ Has just one line : from alg3 import * ]
>>>alg3.py
>>>calg3.c
>>>calg3.h

其中 > 表示子目录。 Projectparser 是我打开 vs code 的文件夹。它还有一个同名的子目录,其中包含我感兴趣的所有算法。

当我尝试 运行 宁 alg1_demo.py 时。以下行导致错误。

sys.append("../")
from Projectparser import alg1 (line 8) 

我收到以下错误: ImportError: cannot import name 'alg1' from 'Projectparser' (unknown location)

所以我添加了这一行: sys.path.append("../Projectparser")

然后我收到以下错误:

File "/home/suneha/Projectparser/demo/alg1_demo.py", line 8, in <module>
    from Projectparser import alg1
  File "../Projectparser/Projectparser/alg1/__init__.py", line 1, in <module>
    from alg1 import *
ModuleNotFoundError: No module named 'alg1'

但是模块存在于子目录中。所以我添加了行:

sys.path.append("../Projectparser/Projectparser/alg1")

然后我收到这个错误:

Traceback (most recent call last):
  File "/home/suneha/Projectparser/demo/alg1_demo.py", line 8, in <module>
    from Projectparser import alg1
  File "../Projectparser/Projectparser/alg1/__init__.py", line 1, in <module>
    from alg1 import *
  File "/home//Projectparser/Projectparser/alg1/alg1.py", line 13, in <module>
    from ..logmatch import regexmatch
ImportError: attempted relative import with no known parent package

对于所有三种算法 alg1、alg2、alg3,同样的问题仍然存在。我不确定如何解决这个问题,使用 sys.append.path() 是解决上述问题的最佳方法。

任何人都可以建议如何解决最终导入错误:ImportError: attempted relative import with no known parent package

如果有任何其他紧凑的方法来解决其他导入错误而不是使用 sys.path.append()。

提前致谢

使用如下语句将需要导入的文件路径添加到系统路径中,以帮助VSCode找到:

import os,sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

以下是您提供的我创建的项目的一部分:

结果:

需要注意以下几点:

  1. 导入时,子文件夹连接.

  2. 请避免使用同名的文件和文件夹,以免VSCode查找模块时出现混淆。

  3. 如果结果可以执行但还是有波浪线,可以在settings.json中加入:"python.linting.pylintArgs": [ "----extension-pkg-whitelist=1xml" ],

更新:

根据您提供的link代码,我在本地复现了您描述的问题,解决方法如下:

  1. 注释掉logparser-master\logparser\SLCT_init_.py.

    的内容“from SLCT import *
  2. 添加import os,syssys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))SLCT_demo.py

运算结果: