【问题标题】:How to avoid module name collision inside package context in python (without renaming)? [duplicate]如何避免python中包上下文中的模块名称冲突(不重命名)? [复制]
【发布时间】:2013-01-17 20:15:35
【问题描述】:

可能重复:
Python modules with identical names (i.e., reusing standard module names in packages)

从包内的模块中,有没有办法忽略给定导入的包上下文?因为该包包含另一个与要从系统而不是包中导入的模块同名的模块。

有没有办法在不重命名其他模块的情况下解决这个问题?

【问题讨论】:

  • 你能举个例子吗?如果您使用绝对导入,则默认行为是首先尝试系统包。
  • @BrenBarn 在这种情况下我无法使用绝对导入。这是一个 python VIM 插件,当 VIM 加载 python 时,我有一个简单命名为 vim 的模块,我可以在我的脚本和模块中导入它。问题是,我还有一个子模块mypackage.vim 和模块mypackage.x 我想要import vim,但不是包中的那个,我想要VIM 提供的那个。
  • 主脚本使用我的vim模块没有问题,因为它使用它作为mypackage.vim.myfuction("hello world"),它不会与vim.vim_function()冲突。但是当我需要在包的内部模块中使用vim.vim_function() 时,问题就出现了。
  • 刚刚被标记为与stackoverflow.com/q/10501473/1000282 重复。

标签: python namespaces package


【解决方案1】:

你试过了吗……

import mypackage.vim as mypvim
import vim

您可以使用“as”语句为您导入的内容提供另一个别名。

【讨论】:

  • 不起作用。我已经放弃并更改了模块的名称 =/
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 2017-01-04
  • 2013-04-12
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多