为什么IPython shell可以找到urllib.parse而普通的python shell不能找到?

时间:2015-12-28 13:20:18

标签: python python-3.x

我无法使用Python 3.4.3理解以下行为:

In [1]: import urllib

In [3]: urllib.parse
Out[3]: <module 'urllib.parse' from '/home/laurent/anaconda/envs/springleaf/lib/python3.4/urllib/parse.py'>

In [4]: urllib.request
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-615cd424e6d8> in <module>()
----> 1 urllib.request

AttributeError: 'module' object has no attribute 'request'

我查看了[myenv]/lib/python3.4/urllib中的urllib包,但它只有一个空的__init__.py,我无法弄清楚parse子模块在{{request子模块可见的原因1}}或error子模块不是。
我期待的行为是让所有模块都可见。

导致parse模块可见而其他模块不可见的原因是什么?

我可以使用from urllib import request就好了,但我想了解行为的原因。

修改 根据评论中的建议,我在一个普通的python shell中运行了相同的命令(我之前使用的是IPython 4.0.0):

>>> import urllib                                                                                         
>>> urllib.parse
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'parse'
>>> urllib.request
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'request'

行为确实不同。这对我来说更有意义,因为所有子模块都表现出相同的行为。

如果有人能解释IPython特定行为的来源,我会很高兴。)。

0 个答案:

没有答案