尝试使用已导入的模块时出现NameError

多里安·多尔(Dorian Dore)

我正在尝试使用Bash和Python编写自己的Shell脚本,并且在与主Shell脚本相同的文件夹中有单独的模块。主Shell脚本从称为的文件中读取要导入的模块defaultmodules.txt,然后将其导入。我这样做是因为,我希望外壳程序的任何用户都能够简单地修改此文件,而不是进入代码来更改他们想要导入的模块。当前,该文件包含三个模块的名称。

net
os
subprocess

我使用此代码从文件中读取模块名称并将其导入。

moduleList = []
with open('defaultmodules.txt', 'r') as mods:
    for line in mods:
        if "#" in line or line == ' ':
            pass
        else:
            moduleList.append(line)
            print("Importing module '{}'".format(line))
            module = line.rstrip('\n')
            print(__import__(module))
            __import__(module)
            print(module.__init__())

但是,即使在导入后,在运行后os.system('echo test')应该简单地打印test到控制台中,我仍然得到以下回溯:

Traceback (most recent call last):
  File "/home/dorian/Desktop/DEBPSH/DEBPSH.py", line 14, in <module>
    os.system('echo test')
NameError: name 'os' is not defined

我的代码中有什么可能导致这种情况发生?

乔恩·克莱门斯

While__import__将加载模块并将其放入sys.modules

import sys

__import__('os')
'os' in sys.modules # True

没有绑定到它的引用,因此请保留以下内容:

globals()[module] = __import__(module)

然后,您可以使用os.system等...

正如kindall在评论中简要指出的那样:

也就是说,__import__是一个函数并返回模块。如果您不给它起一个名字,它就不会有一个名字。所以给它起个名字吧。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python - 导入类模块时出现 NameError

在类中导入模块,但是在类方法中使用模块时出现NameError

模块已导入,但仍呈现 NameError

尝试使用文件操作时出现 NameError

在类中导入模块时出现“NameError: name [module] is not defined”

Python:尝试从导入的包中导入模块时出现“ ModuleNotFoundError”

尝试导入NLTK模块时出现导入错误

尝试使用“请求”模块时导入错误

尝试在Kaggle中加载模块pynrrd时出现导入错误

尝试从展平的命名空间导入模块时出现ModuleNotFoundError

尝试在Python中导入Prov模块时出现ImportError

尝试导入本地模块#222时,worker上出现ModuleNotFoundError

尝试从Arelle模块导入Cntlr时出现语法错误

尝试导入 pybind opencv 模块时出现 libgtk 错误

尝试使用GPU导入Tensorflow时出现导入错误

尝试从另一个脚本导入函数时出现 NameError

尝试在Eclipse中运行Python脚本时出现“ NameError:找不到模块maya的文件”

使用 Python 模块运行 Ansible Playbook 时出现导入错误

使用导入/导出模块时出现“ReferenceError:未定义”

使用嵌套模块中的项目时出现“未解决的导入”

尝试使用Loop从网站导入数据时出现错误

尝试检测图像时出现 NameError

尝试使用@use规则时出现SASS模块错误

尝试使用本地子模块时出现问题

在AMD Radeon上尝试OpenCL + Theano时出现“ pygpu已配置但无法导入”错误

尝试以其他路径导入模块时出现Python ImportError

React-我尝试导入``firebase / app''时出现Firebase模块错误

已安装模块,但导入Cartopy时出错

NodeJS:无法在模块外使用导入语句(已尝试输入:“module”)