【问题标题】:Using imp.load_source() throws "No module named .."使用 imp.load_source() 会抛出“No module named ..”
【发布时间】:2014-11-19 22:49:31
【问题描述】:

我正在使用imp 模块从源代码加载python 文件(存在于:/parent_folder/path/to/my_module/my_module.py):

mod = imp.load_source("my_module", "/parent_folder/path/to/my_module/")

但是,my_module.py 文件也正在导入其他写入并保存在同一文件夹位置的模块:

    my_module.py
    ....
    ...
    from other_module import other_thing
    ...

load_source 无法抱怨 No module named other_module。加载处理所有导入的文件的最佳方法是什么?我宁愿通过使用 python 导入库函数来实现这一点,而不是玩弄sys.path

【问题讨论】:

标签: python-2.7 python-import


【解决方案1】:

您的路径需要包含文件的完整路径名,包括末尾的“.py”:

mod = imp.load_source("my_module", "/parent_folder/path/to/my_module/my_module.py")

【讨论】:

  • 为什么投反对票?请提供明确的理由。否则,请删除您的反对票。这是对 OP 问题的正确答案。
【解决方案2】:

对我来说,显式导入其他依赖项是有效的。

imp.load_source('path/to/other/module/other_module.py')

尝试在加载my_module之前放置它。

【讨论】:

  • load_source 接受两个参数。
猜你喜欢
  • 2016-08-30
  • 2019-07-02
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 2017-08-20
  • 2011-07-26
  • 2022-12-01
  • 2022-12-27
相关资源
最近更新 更多