Python:如何导入与子包同名的模块?
我还没有遇到这个问题,但我很好奇如何导入与子包同名的模块。例如,一个可能的模块结构可能如下所示:
mymodule\
__init__.py
string.py
现在,如果我需要 mymodule.string
子包和 string
模块,该怎么办?随每个 Python 发行版一起从同一目录中的包中交付,例如 __init__.py ?以下代码行全部导入子包。
from . import string
import mymodule.string as string
import string
I haven't come across this problem yet, but I'm curious about how to import a module that has the same name as a sub-package. For instance, a possible module-structure could look like this:
mymodule\
__init__.py
string.py
Now, what if I need the mymodule.string
subpackage and the string
module that is delivered with every Python distribution from a package that is within the same directory, such as __init__.py
? The following lines of code all import the subpackage.
from . import string
import mymodule.string as string
import string
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Python 2.5 或 2.6 中,您可以使用:
这告诉 Python 所有非显式相对的导入都应被视为绝对导入。即,使用此声明后,您可以使用以下方式访问内置字符串模块和您自己的字符串模块:
我相信这成为Python 2.7(和Python 3.0)中的默认设置。
有关详细信息,请参阅:http://www. python.org/dev/peps/pep-0328/#rationale-for-absolute-imports
In Python 2.5 or 2.6, you can use:
Which tells Python that all imports that aren't explicitly relative should be treated as absolute. I.e., after using this declaration, you can access both the builtin string module and your own string module using:
I believe that this becomes the default in Python 2.7 (and Python 3.0).
For more info, see: http://www.python.org/dev/peps/pep-0328/#rationale-for-absolute-imports
您不必将其作为顶级导入来导入。
只需
import mymodule.string
、foo = mymodule.string.baz()
等。如果您确实想将子包用作
string
,您可以将其导入
作为字符串
,但首先执行诸如导入字符串作为内置字符串
之类的操作You don't have to import it as a top level import.
Just
import mymodule.string
,foo = mymodule.string.baz()
, etc.If you really want to use the subpackage as
string
, you canimport
it asstring
, but first do something likeimport string as builtinstring