我在 Python 代码中发现了以下行:
from six.moves import urllib
同时,我可以找到urllib.py
任何地方。我发现有一个文件six.py
在包根目录中,它有class Module_six_moves_urllib(types.ModuleType):
inside.
是这个吗?这是如何定义的?
UPDATE
抱歉,我是 Python 新手,问题是关于 Python 语法的。我了解到,之后是什么import
是不带后缀的 Python 文件名py
扩大。那么,在这种情况下这个文件在哪里呢?
six https://pypi.python.org/pypi/six是一个帮助编写与 Python 2 和 Python 3 兼容的代码的包。
开发人员在为 Python2 和 3 编写代码时面临的问题之一是标准库中的几个模块的名称发生了变化,尽管功能保持不变。
The six.moves
module 以 Python2 和 3 的通用名称提供这些模块(主要是通过以 Python 3 模块的名称提供 Python2 模块)。
所以你的线
from six.moves import urllib
imports urllib
当使用 Python3 运行并导入以下内容的混合物时urllib
, urllib2
and urlparse
使用Python2,模仿Python3的结构urllib
。也可以看看here https://six.readthedocs.io/#module-six.moves.
EDIT解决问题的更新:
太长了;导入的模块之间不一定有直接关系urllib
在这种情况下,还有文件系统上的文件。相关文件正是如此six.__file__
指着。
第三方模块定义在文件/目录中
列于sys.path https://docs.python.org/3/library/sys.html#sys.path。大多数时候,您可以通过检查来找到导入模块的文件的名称__file__
相关模块的属性,例如six.__file__
。然而与six.moves
事情并不那么简单,正是因为暴露的模块实际上可能并不是一对一映射到实际的 Python 模块,而是这些模块的黑客版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)