我在Python代码中找到以下行:
from six.moves import urllib
同时,我可以在任何地方找到
urllib.py
。我发现在包根目录中有一个six.py
文件,里面有class Module_six_moves_urllib(types.ModuleType):
。是这个吗?如何定义?
更新
抱歉,我是Python新手,问题是关于Python语法的问题。我了解到,
import
之后是没有py
扩展名的Python文件名。那么,这种情况下该文件在哪里? 最佳答案
six是一个软件包,可帮助编写与Python 2和Python 3兼容的代码。
开发人员在为Python2和3编写代码时面临的问题之一是,即使功能保持不变,标准库中几个模块的名称也已更改。six.moves
模块以Python2和3的通用名称提供这些模块(主要是通过以Python 3模块的名称提供Python2模块)。
所以你的线
from six.moves import urllib
在Python3上运行时导入
urllib
,并在Python2中导入urllib
,urllib2
和urlparse
的混合物,从而模仿Python3的urllib
的结构。另请参见here。编辑以解决问题的更新:
TLDR;在这种情况下,导入的模块
urllib
与文件系统上的文件之间不一定存在直接关系。相关文件正是six.__file__
指向的文件。第三方模块在以下文件/目录中定义:
在
sys.path
中列出。大多数时候,您可以通过检查相关模块的__file__
属性来找到从中导入模块的文件的名称,例如six.__file__
。但是,使用six.moves
并没有那么简单,恰恰是因为公开的模块实际上可能不是一对一地映射到实际的Python模块,而是被黑化的模块。关于python - `from six.moves import urllib`在Python中做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34989206/