从父目录导入脚本

时间:2012-01-21 06:48:18

标签: python import

如何导入位于父目录中的模块(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

3 个答案:

答案 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)

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

  1. 将FolderA的路径添加到环境变量(PYTHONPATH)。
  2. 在您的脚本中添加sys.path的路径。
  3. 然后:

    import module_you_wanted