2014-09-26 159 views
1

我有一个文件结构像Python 3的“杯酒人生”相对进口

math/ 
    snippets/ 
     numerical_methods.py 
    homework1/ 
     main.py 
    homework2/ 
     main.py 

而且在作业1的main.py,我愿做

from ..snippets.numerical_methods import fixed-point-iteration 

所以,我没有为我使用它的每个任务重新编写此算法。但是,我收到错误“父模块”'未加载,无法执行相对导入“。我究竟做错了什么?

回答

3

您不能从层次结构中比主脚本更高的东西导入,即比homework1文件夹更高的东西。你可以做的是路径添加到您想要导入路径下的脚本:

import sys 
sys.path.append("..") 
from snippets.numerical_methods import fixed-point-iteration 
+2

*您无法从一些上涨导入层次结构中的比你的脚本* - 其实你可以... – vaultah 2015-05-11 12:38:22

+1

见来自[this]的示例(https://docs.python.org/3.4/tutorial/modules.html#intra-package-references)页面(“内部软件包参考”部分) – vaultah 2015-05-11 12:44:19

+2

简化付费人员。您不能导入比* main *脚本更高的文件。从链接:“请注意,相对导入基于当前模块的名称。由于主模块的名称始终为”__main__“,因此用作Python应用程序主模块的模块必须始终使用绝对进口“。我编辑了答案,使其更清晰。 – Claudiu 2015-05-11 13:19:54