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__))))
以下是您提供的我创建的项目的一部分:
结果:
需要注意以下几点:
导入时,子文件夹连接.
请避免使用同名的文件和文件夹,以免VSCode查找模块时出现混淆。
如果结果可以执行但还是有波浪线,可以在settings.json
中加入:"python.linting.pylintArgs": [ "----extension-pkg-whitelist=1xml" ],
更新:
根据您提供的link代码,我在本地复现了您描述的问题,解决方法如下:
注释掉logparser-master\logparser\SLCT_init_.py.
的内容“from SLCT import *
”
添加import os,sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
至 SLCT_demo.py
运算结果:
我是 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__))))
以下是您提供的我创建的项目的一部分:
结果:
需要注意以下几点:
导入时,子文件夹连接
.
请避免使用同名的文件和文件夹,以免VSCode查找模块时出现混淆。
如果结果可以执行但还是有波浪线,可以在
settings.json
中加入:"python.linting.pylintArgs": [ "----extension-pkg-whitelist=1xml" ],
更新:
根据您提供的link代码,我在本地复现了您描述的问题,解决方法如下:
注释掉logparser-master\logparser\SLCT_init_.py.
的内容“from SLCT import *
”添加
import os,sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
至SLCT_demo.py
运算结果: