我有现有的Python模块名称中带有一个破折号,foo-bar.pyPython模块用破折号或连字符( - )的名称中
更改模块名称是东西,我宁愿避免因为模块是共享的,我将不得不追逐所有使用它的地方,这样我的特殊情况才会起作用。
有没有办法加载名称中包含通常被禁止的' - '的模块? (我明白这不是最佳实践,但是对于这种情况,我不想重新设计和测试更多的应用程序,我也不认为我的公司主人会赞同我的服用方式执行此类更改的时间。)
我有现有的Python模块名称中带有一个破折号,foo-bar.pyPython模块用破折号或连字符( - )的名称中
更改模块名称是东西,我宁愿避免因为模块是共享的,我将不得不追逐所有使用它的地方,这样我的特殊情况才会起作用。
有没有办法加载名称中包含通常被禁止的' - '的模块? (我明白这不是最佳实践,但是对于这种情况,我不想重新设计和测试更多的应用程序,我也不认为我的公司主人会赞同我的服用方式执行此类更改的时间。)
您可以使用__import__()
来执行此操作。例如:
foobar = __import__("foo-bar")
但是你真的应该改名模块来代替。这样可以避免模块的文件名与程序中使用的标识符不同的混淆。
谢谢。我确实知道应该在任何可行的地方遵循公约。我将在部门代码审查期间提出这个具体问题。 –
如何导入一个子模块使用这种方法? – Fydo
我知道这个问题已经回答了满意的提问者,但这里是另一个答案,我认为有一些优点使用__import__()
。
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
根据文档:
"This provides an implementation of import which is portable to any
Python interpreter. This also provides an implementation which is
easier to comprehend than one implemented in a programming language
other than Python."
Python 2.7
+仅
我正在寻找如何做到这一点,你的答案比旧的答案适用于我的情况更好。如果你看到已有人的独特答案,将其添加为新的答案,这样一来,像我这样的人就可以在一个地方找到所有相关信息,这总是很好。 –
你不能只是做一个发现,在档案在你的IDE和替换所有'FOO,bar's与'foobar'或其他?那有多难? – agf
http://stackoverflow.com/questions/761519/is-it-ok-to-use-dashes-in-python-files-when-trying-to-import-them – BenH
这个答案特别是:http:// stackoverflow.com/questions/761519/is-it-ok-to-use-dashes-in-python-files-when-trying-to-import-them/762693#762693 – BenH