Python模块,名称中带有破折号或连字符( - )

时间:2011-09-28 13:01:34

标签: python module import

我有一个现有的python模块,名称为foo-bar.py

我希望避免更改模块名称,因为模块是共享的,我将不得不追查它所使用的所有位置,以便我的特殊情况能够正常工作。

有没有办法加载名称中包含通常被禁止的模块' - '?

(我知道这不是最佳做法。但对于这种情况,我宁愿不重新设计和测试更大的应用程序。我也不认为我的公司主人会赞成我的是时候实施这样的改变了。)

3 个答案:

答案 0 :(得分:80)

您可以使用__import__()执行此操作。例如:

foobar = __import__("foo-bar")

但你真的应该重命名模块。这样就可以避免混淆,因为模块的文件名与程序中使用的标识符不同。

答案 1 :(得分:39)

我知道这个问题已经得到了提问者的满意答复,但是我认为这是另一个使用__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 +仅

答案 2 :(得分:0)

尝试使用下划线代替连字符。

导入pymysql_utils

为我工作,即使import pymysql-utils是pip使用的模块的名称