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

时间:2015-07-17 11:50:36

标签: python python-3.x python-module

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

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

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

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。 我认为问题在于使用 init .py。 我把可执行脚本放在包含的路径中,并且工作正常

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

所以你在定义相对路径方面遇到了麻烦,对吗?请尝试以下方法:

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

希望有所帮助。