【问题标题】:Python ImportLib 'No Module Named'Python ImportLib'没有命名模块'
【发布时间】:2016-06-27 19:20:15
【问题描述】:

我正在尝试将变量用作从 Python 中导入的模块。

使用 ImportLib 我已经成功找到测试...

sys.path.insert(0, sys.path[0] + '\\tests')
tool_name = selected_tool.split(".")[0]
selected_module = importlib.import_module("script1")
print(selected_module)

...通过打印 select_module 我可以看到它成功找到了脚本:

<module 'script1' from 'C:\\Users\\.....">

但是,当我尝试在代码中使用此变量从中导入模块时:

from selected_module import run
run(1337)

程序退出并出现以下错误:

ImportError: No module named 'selected_module'

我尝试将 init.py 文件添加到主目录和脚本所在的 /test 目录,但无济于事。我确定这只是我错过的一些愚蠢的小东西 - 有人知道吗?

【问题讨论】:

    标签: python python-importlib


    【解决方案1】:

    导入语句对变量不敏感!它们的内容被视为文字

    一个例子:

    urllib = "foo"
    from urllib import parse   # loads "urllib.parse", not "foo.parse"
    print(parse)
    

    请注意,from my_module import my_func 将简单地将 my_module.my_func 绑定到本地名称 my_func。如果您已经通过importlib.import_module 导入了模块,您可以自己执行此操作:

    # ... your code here
    run = selected_module.run  # bind module function to local name
    

    【讨论】:

    • 太棒了,非常感谢您的帮助!当我没有使用 from“import”,而是选择了 selected_module.run 时,它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 2019-12-12
    • 2011-11-27
    • 1970-01-01
    • 2021-01-08
    • 2018-03-12
    • 2020-08-15
    • 1970-01-01
    相关资源
    最近更新 更多