从父目录导入脚本
如何导入驻留在父目录中的模块(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
你不用Python导入模块导入脚本。 一些python模块也是可以直接运行的脚本(它们在模块级别上做了一些有用的工作)。
一般来说,最好使用绝对import而不是相对import。
toplevel_package/ ├── __init__.py ├── moduleA.py └── subpackage ├── __init__.py └── moduleB.py
在moduleB
:
from toplevel_package import moduleA
如果你想运行moduleB.py
作为脚本,那么确保toplevel_package
父目录在你的sys.path
。
从文档 :
from .. import scriptA
你可以在包中做到这一点,但不是在你直接运行的脚本中。 从上面的链接:
请注意,显式和隐式相对导入都基于当前模块的名称。 由于主模块的名称始终为“__main__”,因此用作Python应用程序主模块的模块应始终使用绝对导入。
如果您创build一个导入ABB的脚本,您将不会收到ValueError。
如果你想直接运行脚本,你可以:
- 将FolderA的path添加到环境variables(
PYTHONPATH
)。 - 在脚本中添加
sys.path
的path。
然后:
import module_you_wanted