关于python:从不同目录导入模块

Importing modules from different directories

导入模块时出现问题:它在这个目录./dao下,调用它的代码在这里是./core。示意图表示为:

1
2
3
4
5
6
7
8
rnaspace/
 __init__.py
 core/
   __init__.py
   logger.py
 dao/
   __init__.py
   storage_configuration_reader.py

这是错误消息:

1
2
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文件位于同一文件夹中,如下所示:

1
2
3
""" Package dao
    Gathers files that access to the plateform data
"""

如果我能很好地理解这个问题,它应该是有效的。我认为问题是,一个不是另一个的子目录(或者路径不是非常正确的那个目录),有没有办法绕过它?或者需要我将解决方案应用于这个问题?

编辑rnaspace文件夹的__init__.py文件:

1
2
3
4
import rnaspace.dao.storage_configuration_reader as scr

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


我最后在另一个问题中找到了解决方案,它使用的是模块IMP。我只需要添加模块的名称和绝对路径:

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


1
from rnaspace.dao.storage_configuration_reader import storage_configuration_reader

这是错误的,因为在"DAO"目录中没有"存储配置读卡器"目录

应该这样做:

1
from rnaspace.dao import storage_configuration_reader

编辑:

或者这样:

1
import rnaspace.dao.storage_configuration_reader