尽管python说模块存在,为什么我会得到这个消息?
我对以下repl交互感到困惑:尽管python说模块存在,为什么我会得到这个消息?,python,python-3.x,ipython,Python,Python 3.x,Ipython,我对以下repl交互感到困惑: In [7]: import os In [8]: os.sys Out[8]: <module 'sys' (built-in)> In [9]: os.sys.stderr Out[9]: <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> In [10]: from os.sys import stderr -------------------
In [7]: import os
In [8]: os.sys
Out[8]: <module 'sys' (built-in)>
In [9]: os.sys.stderr
Out[9]: <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>
In [10]: from os.sys import stderr
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-10-cd47f2925e40> in <module>()
----> 1 from os.sys import stderr
ImportError: No module named 'os.sys'; 'os' is not a package
[7]中的:导入操作系统
在[8]中:os.sys
出[8]:
在[9]中:os.sys.stderr
出[9]:
在[10]中:从os.sys导入stderr
---------------------------------------------------------------------------
ImportError回溯(最近一次呼叫最后一次)
在()
---->1从os.sys导入stderr
ImportError:没有名为“os.sys”的模块;'“操作系统”不是一个包
为什么Python3.5.3声明os.sys
是一个模块,但在尝试导入它时,会出现错误
注意:我知道,要访问错误流,我需要从sys导入stderr
,但无论如何我都感到困惑。您还没有导入os.sys
。您只访问了符号。来自。。。import…
语句试图访问解释器中没有数据的部分。(很可能是系统模块)
在重复命令之前,请尝试执行导入os.sys的操作
>>> import sys
>>> sys.modules['os']
>>> <module 'os' from '/.../lib/python3.5/os.py'>
sys.modules['os.sys']
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'os.sys'
您尚未导入
os.sys
。您只访问了符号。来自。。。import…语句试图访问解释器中没有数据的部分。(很可能是系统模块)
在重复命令之前,请尝试执行导入os.sys的操作
>>> import sys
>>> sys.modules['os']
>>> <module 'os' from '/.../lib/python3.5/os.py'>
sys.modules['os.sys']
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'os.sys'
os
模块实际上导入了sys
,因此可以通过os.sys
访问sys
模块(就像模块顶层定义的任何名称一样)。这不会使sys
成为os
的适当子模块,因此无法从os.sys
导入
作为旁注,
os
importssys
这一事实是一个不应该依赖的实现细节 操作系统模块实际上导入了sys
,因此可以通过os.sys
访问sys模块(就像在模块顶层定义的任何名称一样)。这不会使sys
成为os
的适当子模块,因此无法从os.sys
导入
作为旁注,os
importssys
这一事实是一个不应该依赖的实现细节 re“这不会使sys成为操作系统的子模块,因此无法从操作系统导入”-您可以从操作系统导入sys,请在repl中尝试从操作系统导入sys。您不能将os.sys
用作一个模块。e、 g.从os.sys
@khachik导入是的,很抱歉,我的回答在这一点上的措辞非常糟糕-我编辑了它,谢谢建设性的批评。奇怪的是,解释器声称os.sys
是一个模块。也许模块这个术语的含义与我所期望的不同,因为显然不是所有模块都可以导入。@oarfish这里确实有一些多义词。。。模块是“可以导入的东西-通常但不一定是.py文件”,运行时模块是“通过导入创建的模块
类型的实例”。re“这不会使sys成为操作系统的子模块,因此您无法从操作系统导入它”-您可以从操作系统导入sys,在您的repl中尝试从操作系统导入系统。您不能将os.sys
用作一个模块。e、 g.从os.sys
@khachik导入是的,很抱歉,我的回答在这一点上的措辞非常糟糕-我编辑了它,谢谢建设性的批评。奇怪的是,解释器声称os.sys
是一个模块。也许模块这个术语的含义与我所期望的不同,因为显然不是所有模块都可以导入。@oarfish这里确实有一些多义词。。。有一个模块是“可以导入的东西(通常但不一定是.py文件)”,运行时模块是“通过导入创建的module
类型的实例”。