关于python:从父目录导入脚本

Import Script from a Parent Directory

如何导入驻留在父目录中的模块(python文件)?

两个目录中都有一个__init__.py文件,但我仍然无法从父目录导入文件?

在此文件夹布局中,脚本B正在尝试导入脚本A:

1
2
3
4
5
6
Folder A:
   __init__.py
   Script A:
   Folder B:
     __init__.py
     Script B(attempting to import Script A)

脚本B中的以下代码不起作用:

1
import ../scriptA.py # I get a compile error saying the"." is invalid


您不导入导入模块的Python脚本。 一些python模块也是可以直接运行的脚本(它们在模块级别执行一些有用的工作)。

一般来说,最好使用绝对进口而不是相对进口。

1
2
3
4
5
6
toplevel_package/
├── __init__.py
├── moduleA.py
└── subpackage
    ├── __init__.py
    └── moduleB.py

moduleB中:

1
from toplevel_package import moduleA

如果您想将moduleB.py作为脚本运行,请确保toplevel_package的父目录位于sys.path中。


来自文档:

1
from .. import scriptA

您可以在包中执行此操作,但不能在直接运行的脚本中执行此操作。 从上面的链接:

Note that both explicit and implicit relative imports are based on the
name of the current module. Since the name of the main module is
always"__main__", modules intended for use as the main module of a
Python application should always use absolute imports.

如果创建导入A.B.B的脚本,则不会收到ValueError。


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

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

    1
    import module_you_wanted