Python模块名称冲突

2023-11-25

我遇到过两个必须使用相同模块名称导入的 Python 模块,例如

import foo

我知道我想要的那个提供了某些功能(例如foo.bar()),那么有没有一种方法可以循环使用同名的模块,直到找到提供这些功能的模块?或者除了在安装之前重命名模块之外没有其他办法吗?

编辑:只是为了澄清我的意思,这两个模块都位于站点包内:

site-packages$ ls python_montage-0.9.3-py2.6.egg
EGG-INFO montage
site-packages$ ls montage-0.3.2-py2.6.egg/
EGG-INFO montage

这是一种方法:

import imp
import sys


def find_module(name, predicate=None):
    """Find a module with the name if this module have the predicate true.

    Arguments:
       - name: module name as a string.
       - predicate: a function that accept one argument as the name of a module and return
             True or False.
    Return:
       - The module imported
    Raise:
       - ImportError if the module wasn't found.

    """

    search_paths = sys.path[:]

    if not predicate:
        return __import__(name)

    while 1:
        fp, pathname, desc = imp.find_module(name, search_paths)
        module = imp.load_module(name, fp, pathname, desc)

        if predicate(module):
            return module
        else: 
            search_paths = search_paths[1:]

我敢打赌有一些我没有考虑到的角落,但希望这能给你一些想法。

注意:我认为最好的想法是如果可能的话重命名你的模块。

N.B 2:正如我在您编辑的答案中看到的那样,遗憾的是这个解决方案将不起作用,因为这两个模块存在于同一目录(site-packages/)中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python模块名称冲突 的相关文章

随机推荐

  • 有没有办法将音频文件发送到语音转文本识别

    我想要 Android 语音识别系统分析音频文件 而不是来自麦克风的默认传入语音 有什么办法可以做到这一点吗 谢谢 cmusphinx sourceforge net wiki tutorialandroid 刚刚发现该链接听起来像是有人创
  • 如何使用 py2exe 减小 exe 的大小

    我使用 python 和 wxwidgets 开发了一个小程序 这是一个非常简单的程序 仅使用一个迷你框架在需要时显示一些信息 其余时间则不显示任何内容 仅在任务栏中显示一个图标 当我使用 py2exe 单文件 exe 模式 优化 构建 e
  • SQL Server 2005 如何清除查询执行计划

    各位程序员大家好 我有一个 SQL Server 2005 查询 第一次处理需要很长时间 第一次运行后 查询的运行速度要快得多 从一分钟到一秒 我知道 SQL Server 正在缓存执行计划 这个术语正确吗 我想做的就是明确这个执行计划 以
  • 异常与断言

    Java异常处理和使用异常处理有什么区别assert状况 众所周知 Assert 有两种类型 但我们什么时候应该使用assert关键词 使用断言进行代码中的内部逻辑检查 并使用正常异常来处理直接代码控制之外的错误情况 不要忘记断言可以打开和
  • 如何正确解析由空格分隔的文本文件

    下面是我的示例文本文件 这是我的架构文件 Sample File txt ColNameHeader True Format TabDelimited CharacterSet ANSI 这是我迄今为止编写的用于尝试读取上述示例文件的代码
  • python 是否允许我在运行时将动态变量传递给装饰器?

    我正在尝试在工作中集成一个非常旧的系统和一个较新的系统 我能做的最好的事情就是利用系统使用的 RSS 消防站类型提要 目标是使用此 RSS 源让其他系统在某些人做某事时执行某些操作 我的想法是在某些函数周围封装一个装饰器来检查用户 RSS
  • 如何将 istream_view 收集到容器中?

    我试图为我的扩展实现一个通用的缩减操作c 20 s ranges这将收集任何元素range到给定的容器中 为了实现这一点 我首先创建了一个虚拟类型来提取template template参数并提供operator 用于梳理一个range用它
  • 如何处理 URL 中的转义字符(管道 |)(Spring、REST、CXF)?

    我正在使用 Spring CXF Tomcat 来开发 Web 服务 我在发送 URL 中的管道 等字符时遇到问题 例如 http localhost 9080 address v1 countries 抛出 500 错误 有没有办法处理它
  • Playstore 错误:App Bundle 包含本机代码,并且您尚未上传调试符号

    当我想向 Playstore 发布新的 flutter 应用程序包时 我收到此错误 此应用程序包包含本机代码 并且您尚未上传调试符号 我们建议您上传符号文件 以使崩溃和 ANR 更易于分析和调试 我找不到任何方法来解决这个问题 我是颤振和发
  • 为什么 ObservableCollection 不支持批量更改?

    造成的潜在问题有哪些ObservableCollection支持操作 例如AddRange or RemoveRange 既然 ObservableCollection 如此频繁地与 WPF 一起使用 那么 Microsoft 不提供它们肯
  • 为什么 Perl 不支持双引号中的哈希插值?

    usr bin perl use warnings my hash no1 gt 1 no2 gt 2 print hash Prints no11no22 print hash Prints hash 为什么 Perl 不支持双引号内的哈
  • Dc.js 将范围图应用于多个图表

    过去几周我一直在使用 dc js 但有一个问题我似乎无法解决 我希望能够使用画笔过滤器基于单个图表更改四个不同图表的比例 大致如下 priorityTotChart width 2 w 3 height h 3 margins top 10
  • 检查交叉投射是否可行?

    我知道使用是合法的dynamic cast跨类层次结构进行 交叉转换 例如 如果我有如下所示的类 A B C 如果我有一个A 指向类型对象的指针C 那么我可以使用 A aPtr something that produces a C B b
  • 如何将 Wbmp 转换为 Png?

    在 Google 上花了很多时间研究这个问题后 我找不到在 C 中将 Wbmp 图像转换为 Png 格式的示例 我从互联网上下载了一些 Wbmp 图像 并使用二进制编辑器查看它们 有没有人有一种算法可以帮助我这样做 或者任何代码也会有帮助
  • Python 装饰器保留签名和用户定义的属性

    我有我的简单装饰器my decorator它装饰了my func def my decorator func def wrapper args kwargs return func args kwargs wrapper decorator
  • 在 Google 电子表格中运行脚本时出现权限错误

    我们正在开发一个使用 Google 电子表格作为输入的程序 电子表格的值被读取 处理 结果显示在网页中 当用户注册时 我们使用服务帐户从模板克隆电子表格 该模板有一些我们想要用来帮助用户在电子表格上引入值的脚本 但这些脚本似乎拥有服务帐户的
  • 如何创建类似 App Store 精选页面的布局?

    我是 iOS 开发新手 根据我的假设 App Store 中的功能页面是使用 UITableView 和 UICollectionView 的组合创建的 但在理论上和代码上如何做到这一点呢 我知道这有点模糊 因为很难描述它 但我只是需要一些
  • 如何在VBA中的公式中插入变量

    有人能解决这个问题吗 Sub test Dim i as integer For I 1 to 10 ActiveCell Offset 0 2 Formula Sum E15 i Next I End Sub 你的实际目标不清楚 你可能想
  • Git 日志不显示任何内容

    我有许多 git 存储库 带有提交 每个存储库在运行时都不显示任何内容git log 如果我在项目目录之外运行命令 没有 git 存储库 我会得到 致命 不是 git 存储库 或任何父目录 git 我尝试重新安装 Git 我现在运行的是 1
  • Python模块名称冲突

    我遇到过两个必须使用相同模块名称导入的 Python 模块 例如 import foo 我知道我想要的那个提供了某些功能 例如foo bar 那么有没有一种方法可以循环使用同名的模块 直到找到提供这些功能的模块 或者除了在安装之前重命名模块