【问题标题】:Python to specify which module to import from if there are duplicate module names?如果有重复的模块名称,Python 指定从哪个模块导入?
【发布时间】:2015-02-05 20:00:54
【问题描述】:

相关:Import a module from a relative path

dirA/
    A.py
    B.py
dirB/
    B.py

A.py
import B

# do blah

我想让 A 导入 B。

由于两个目录都有 B.py,我如何指定 A 从 dirB 而不是 dirA 导入 B?

【问题讨论】:

  • “我要 A 导入 B”是什么意思。有两个 B。您希望 A 导入哪个 B?如果不想让A导入,为什么dirA中有B.py
  • 完全正确。这就是问题所在,因为有两个。它是我软件中的版本控制。在某些情况下,A(它是一个包装器)需要从位于文件系统不同树中的先前版本 B.py 导入
  • 我觉得你应该解释一下你的实际情况。您可能需要重新考虑解决此问题的策略。尝试在不是包的单独目录中导入多个同名文件之一会导致代码非常混乱。

标签: python


【解决方案1】:

我认为您要的是如何直接从目录加载模块。

import imp

moduleB = imp.load_source('moduleB', '/ModuleBPath/B.py')
moduleB.MyClass()

【讨论】:

  • 我不知道这一点。有趣.. :)
【解决方案2】:

你可以像下面这样使用:-

from A import B
from B import B as B1

并继续使用。

【讨论】:

【解决方案3】:

你可以试试这样的变种:

from ..dirB import B

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-04
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2013-07-21
    • 2012-11-15
    相关资源
    最近更新 更多