相似的问题已经问了很多遍,但是我不知道在使用IntelliJ时该如何解决。
我有一个类似以下的目录
包
├── init .py。
├──子包装1
│├── init .py
│├──moduleX.py
├──子包装2
│├── init .py
│├──moduleY.py
在moduleY
中,我想使用相对导入语法导入moduleX
:
from ..subpackage1 import moduleX
,并收到以下错误消息:
尝试了超出顶级软件包的相对导入
我知道可以通过将工作目录更改为“程序包”的顶部并在控制台中键入python -m package.subpackage2.moduleY
来解决此问题。
但是我如何在IntelliJ中做到这一点?
答案 0 :(得分:0)
以下应该有效:
props.location.state
此外,here
也对如何处理进口有很好的解释。更新:
浏览了官方文档后,我意识到上述相对导入失败的原因是,在使用import sys
from os import path
sys.path.append( path.dirname( path.dirname( path.abspath(__file__) ) ) )
from subPackage1 import fileInSubPackage1
时,某些东西应该是一个包或多个包。
下图将对其进行进一步说明:
如果我们具有上述项目结构,并且想在from something import somefile
中导入the_program.py
,则必须编写file_random.py
directory_one和package_inside_directory都是软件包。并且from directory_one.package_inside_directory_one import the_program
将产生from ..package_two_inside_directory_one import the_program
现在,如果结构扩展到下面:
,我们在the_program.py中,要导入ValueError: attempted relative import beyond top-level package
和file_under_Subdirectory.py
,我们只需遵循相同的规则:
more_tests.py