【发布时间】:2021-01-21 00:52:20
【问题描述】:
我是 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 代码的文件夹。它还有一个同名的子目录,其中包含我感兴趣的所有算法。
当我尝试运行 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()。
提前致谢
【问题讨论】:
标签: python python-3.x visual-studio-code python-import importerror