如何从相对路径导入子模块?

How to import submodules from relative path?

我的项目中有多个模块并指定了一些执行点。但是当我尝试从子模块导入文件时,它不起作用。

那么,如何从选定的执行文件中指定要执行的子模块?

project
--bin
---- executeFile
--modules
---- __init__.py
----fileA.py

executeFile,我尝试:

from ..modules.fileA import * 

但出现错误:

Traceback (most recent call last):
File "./bin/muexecute", line 10, in <module>
  from ..modules.os import *
SystemError: Parent module '' not loaded, cannot perform relative import

您要导入的所有模块都应该在您的 PYTHONPATH 中。因此没有等级制度。 在你的情况下在我看来你的项目的主文件夹(包括所有模型)中缺少一个 __init__.py,所以 executefile 不知道你的模块。

所以您在定义相对路径时遇到了问题,对吗?请尝试以下操作:

from sys import path
path.append('C:\realative_path')
from function_file import required_function

希望对您有所帮助。

我找到了解决方案。 在我看来,问题在于使用 init.py。 我将可执行脚本路径放入 including 中,它工作正常

PACKAGE_PARENT = '..'
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))