从父目录导入脚本

如何导入驻留在父目录中的模块(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。

如果你想直接运行脚本,你可以:

  1. 将FolderA的path添加到环境variables( PYTHONPATH )。
  2. 在脚本中添加sys.path的path。

然后:

 import module_you_wanted