我在Python代码中找到了以下行:
from six.moves import urllib
Run Code Online (Sandbox Code Playgroud)
同时,我可以在urllib.py任何地方找到.我发现six.py包root 中有一个文件,里面有文件class Module_six_moves_urllib(types.ModuleType):.
是这个吗?这是如何定义的?
UPDATE
对不起,我是Python新手,问题是Python语法.我了解到,之后的import是没有py扩展名的Python文件名.那么,在这种情况下这个文件在哪里?
kar*_*son 45
six是一个有助于编写与Python 2和Python 3兼容的代码的包.
开发人员在为Python2和3编写代码时遇到的一个问题是标准库中的几个模块的名称已经改变,即使功能保持不变.
该six.moves模块以Python2和3的通用名称提供这些模块(主要通过以Python 3模块的名称提供Python2模块).
所以你的路线
from six.moves import urllib
Run Code Online (Sandbox Code Playgroud)
进口urllib时Python3运行和进口的混合物urllib,urllib2并urlparse用Python2,模仿Python3的结构urllib.另见这里.
编辑以解决问题的更新:
TLDR; urllib在这种情况下,导入的模块与文件系统上的文件之间不一定存在直接关系.相关文件正是six.__file__指向的内容.
第三方模块在列出的文件/目录中定义sys.path.大多数情况下,您可以通过检查__file__相关模块的属性来找到导入模块的文件的名称,例如six.__file__.然而,six.moves事情并不那么简单,正是因为暴露的模块实际上可能不会将一对一映射到实际的Python模块,而是黑客的版本.
| 归档时间: |
|
| 查看次数: |
31828 次 |
| 最近记录: |