使用imp导入模块

2024-09-28 05:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本执行以下操作:

import imp
imp.load_source("storage_configuration_reader","/bi/opt/RNAspace/rnaspace_sources/rnaspace/rnaspace/rnaspace/dao/storage_configuration_reader.py")

稍后,我用相同的名称调用这个模块的一个类:

^{pr2}$

如果像上面那样导入它,我会得到以下名称errorNameError: global name 'storage_configuration_reader' is not defined,但是如果我使用以下代码:

import imp
imp.load_source("storage_configuration_reader","/bi/opt/RNAspace/rnaspace_sources/rnaspace/rnaspace/rnaspace/dao/storage_configuration_reader.py")
import storage_configuration_reader
config = storage_configuration_reader()

然后我得到这个错误TypeError: 'module' object is not callable

更改imp.load_source的名称无助于导入对象:

import imp
imp.load_source("storage_configuration","/bi/opt/RNAspace/rnaspace_sources/rnaspace/rnaspace/rnaspace/dao/storage_configuration_reader.py") 
<module 'storage_configuration' from '/bi/opt/RNAspace/rnaspace_sources/rnaspace/rnaspace/rnaspace/dao/storage_configuration_reader.pyc'>
 import storage_configuration
 config = storage_configuration_reader()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'storage_configuration_reader' is not defined

导入这样一个对象的最佳方法是什么(又称工作方式)?在

信息:存储配置读卡器定义:

class storage_configuration_reader(object):
    """ 
    Class configuration_reader: this object read the config file and return the 
    different configuration values
    """
    ...

Tags: pyimport名称sourceloadstorageconfigurationreader
1条回答
网友
1楼 · 发布于 2024-09-28 05:24:36

imp.load_source使用给定的path加载模块,并使用新的name命名它,它与from your_module_at_path import your_class_by_name不同,它就像import your_module_at_path as new_name(不完全相同)。在

此外,您需要将名称赋给变量才能使用它:

wtf=imp.load_source("new_module_name", your_path)
#wtf is the name you could use directly:
config = wtf.storage_configuration_reader()

名称new_module_name作为键存储在字典sys.modules中,可以这样使用它:

^{pr2}$

从其他目录导入模块的简单方法是将模块的路径添加到sys.path

import sys
sys.path.append("/bi/opt/RNAspace/rnaspace_sources/rnaspace/rnaspace/rnaspace/dao")
import storage_configuration_reader
config = storage_configuration_reader.storage_configuration_reader()

相关问题 更多 >

    热门问题