繁体   English   中英

从不同目录导入模块

[英]Importing modules from different directories

我在导入模块时遇到问题:该模块位于./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 
"""

如果我很好地理解了这个问题 ,它应该可以工作。 我认为问题在于一个目录不是另一个目录的子目录(或者该路径不是一个目录的子目录),有办法解决吗? 还是需要对这个问题应用解决方案?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM