从不同目录导入模块

时间:2014-02-18 13:32:30

标签: python python-2.6 python-module

我在导入模块时遇到问题: 它位于此目录./dao下,调用它的代码位于./core。示意性地表示为:

rnaspace/
 __init__.py
 core/
   __init__.py
   logger.py
 dao/
   __init__.py
   storage_configuration_reader.py

这是错误消息:

Traceback (most recent call last):   File "logger.py", line 21, in <module>
    from rnaspace.dao.storage_configuration_reader import storage_configuration_reader ImportError: No module named rnaspace.dao.storage_configuration_reader

此文件位于/rnaspace/dao/storage_configuration_reader.py并且在__init__.py文件的同一文件夹中,如下所示:

""" Package dao
    Gathers files that access to the plateform data 
"""

如果我理解得很清楚this question,它应该有效。我认为问题在于,一个不是另一个的子目录(或者路径不是那个路径),有办法解决它吗?或者我需要将解决方案应用于this question

修改 rnaspace文件夹的__init__.py文件:

import rnaspace.dao.storage_configuration_reader as scr

def update_conf(conf_path, predictors_conf_dir):
    scr.update_conf(conf_path, predictors_conf_dir)

2 个答案:

答案 0 :(得分:0)

from rnaspace.dao.storage_configuration_reader import storage_configuration_reader

这是错误的,因为“dao”目录中没有“storage_configuration_reader”目录

应该是这样的:

from rnaspace.dao import storage_configuration_reader

修改

或者这样:

import rnaspace.dao.storage_configuration_reader

答案 1 :(得分:0)

我终于在另一个question中找到了解决方案,它正在使用模块imp。
我只需要添加模块的名称,以及它的绝对路径:

imp.load_source("storage_configuration_reader","./rnaspace/dao/storage_configuration_reader.py")