如何导入位于父目录中的模块(python文件)?
两个目录中都有__init__.py
个文件,但我仍然无法从父目录导入文件?
在此文件夹布局中,脚本B正在尝试导入脚本A:
Folder A:
__init__.py
Script A:
Folder B:
__init__.py
Script B(attempting to import Script A)
脚本B中的以下代码不起作用:
import ../scriptA.py # I get a compile error saying the "." is invalid
答案 0 :(得分:63)
您不导入导入模块的Python脚本。一些python模块也是可以直接运行的脚本(它们在模块级别执行一些有用的工作)。
一般来说,最好使用绝对进口而不是相对进口。
toplevel_package/
├── __init__.py
├── moduleA.py
└── subpackage
├── __init__.py
└── moduleB.py
在moduleB
:
from toplevel_package import moduleA
如果您想将moduleB.py
作为脚本运行,请确保toplevel_package
的父目录位于sys.path
。
答案 1 :(得分:25)
来自docs:
from .. import scriptA
您可以在包中执行此操作,但不能在直接运行的脚本中执行此操作。从上面的链接:
请注意,显式和隐式相对导入均基于 当前模块的名称。由于主模块的名称是 总是“__main__”,模块用作a的主要模块 Python应用程序应始终使用绝对导入。
如果您创建导入A.B.B的脚本,则不会收到ValueError。
答案 2 :(得分:4)
如果您想直接运行脚本,可以:
PYTHONPATH
)。sys.path
的路径。然后:
import module_you_wanted