You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境Python3.9.6使用urllib模块的两个相关问题咨询

问题1:如何找到urllib未默认暴露的子模块

urllib作为标准库包,其根目录下的__init__.py默认仅主动导入了parse子模块,其余子模块不会在父包导入时自动加载,因此刚执行import urllib后调用dir(urllib)看不到request、error这类子模块。只有当你显式导入urllib.request等子模块时,对应模块才会被加载并绑定为父包的属性,出现在dir返回结果中。

无需查阅文档即可查询所有子模块的两种方法:

  • 查看本地包文件:执行print(urllib.__path__)获取urllib包在你电脑上的存储目录,打开该目录后,所有非__init__.py的.py文件、以及包含__init__.py的子文件夹,都是urllib的子模块/子包,去掉.py后缀就是模块名。
  • 代码枚举:调用标准库pkgutil的iter_modules方法直接枚举所有子模块,代码如下:
import pkgutil
import urllib
module_list = [mod_name for _, mod_name, _ in pkgutil.iter_modules(urllib.__path__)]
print(module_list)

问题2:help(urllib)提示找不到more命令的原因

该报错和urllib模块本身无关,是help()函数底层调用系统分页工具失败导致的。
help()输出长文本时会默认调用系统自带的分页工具做内容拆分显示,Windows系统下默认调用的是C:\Windows\System32目录下的more.com程序。如果你的系统环境变量PATH中没有添加C:\Windows\System32路径,系统就无法找到该命令,触发报错。

你可以直接打开CMD执行more验证,如果CMD也报相同错误,将C:\Windows\System32添加到系统环境变量PATH中,重启终端后即可正常使用help()功能。

问题复现代码

Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> help(urllib)
'more' 不是内部或外部命令,也不是可运行的程序或批处理文件。

>>> dir(urllib)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'parse']
>>> import urllib.request
>>> dir(urllib)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'error', 'parse', 'request', 'response']
>>>

内容的提问来源于stack exchange,提问作者101is5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:24:04