sys模块内置在每个python解释器中是什么意思?

时间:2018-07-11 04:09:28

标签: python python-3.x python-module built-in

我正在阅读官方的Python教程,上面写着

  

一个特定的模块值得关注:sys,它内置在每个Python解释器中。

但是,如果我启动python解释器并键入sys.path,则会得到一个NameError: name sys is not defined

因此,如果我想访问sys,则需要导入它。

那么它“内置在每个python解释器中”是什么意思?

3 个答案:

答案 0 :(得分:7)

这只是意味着

import sys

将成功,无论您使用的是哪个版本的Python。它随每个Python安装一起提供。相反,例如,

import mpmath

将失败,除非您自己安装了mpmath软件包,或者它与您正在使用的特定Python安装捆绑在一起。

答案 1 :(得分:1)

  

那么,它“内置在每个python解释器中”是什么意思?   ?

sys模块是written in C,并被编译成Python解释器本身。根据解释器的版本,可能会有更多此类模块-sys.builtin_module_names列出了所有模块。
您已经注意到,仍然需要import内置模块,就像任何其他扩展一样。

>>> import sys
>>> sys.builtin_module_names
('_ast', '_codecs', '_collections', '_functools', '_imp', '_io', '_locale', '_operator', '_signal', '_sre', '_stat', '_string', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'atexit', 'builtins', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'posix', 'pwd', 'sys', 'time', 'xxsubtype', 'zipimport')

答案 2 :(得分:0)

  

sys模块是用C编写的,并被编译成Python解释器本身。根据解释器的版本,可能会有更多这样的模块— sys.builtin_module_names>列出所有模块。

值得强调的是,Python解释器,CPython或JPython或其他内置了“ sys”模块。

您将找不到像普通模块一样的“ sys.py”。

Help(sys)将显示在信息下面

Help on built-in module sys:
NAME
    sys
FILE
    *(built-in)*

通过对比: 帮助(操作系统)

Help on module os:
NAME
    os - OS routines for Mac, NT, or Posix depending on what system we're on.
FILE
    */usr/lib64/python2.7/os.py*

与C相比,“ sys”在某种程度上可以视为LIBC(“ libc.so.7”)的一部分。