代码之家  ›  专栏  ›  技术社区  ›  titiree

sys模块内置到每个python解释器中意味着什么?

  •  3
  • titiree  · 技术社区  · 7 年前

    我正在看python的官方教程,上面说

    有一个特别的模块值得注意:sys,它内置在每个python解释器中。

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

    因此,我需要进口 sys 如果我想接触它。

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

    3 回复  |  直到 7 年前
        1
  •  7
  •   Tim Peters    7 年前

    它只是意味着

    import sys
    

    将成功,无论您使用的是哪种版本的python。它伴随着每一个python安装。相反,例如,

    import mpmath
    

    除非您安装了 mpmath 自己打包,或者与您正在使用的特定python安装捆绑在一起。

        2
  •  1
  •   Eugene Yarmash    7 年前

    那么它“内置在每个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')
    
        3
  •  0
  •   jian wang    6 年前

    sys模块用c编写,并编译为>python解释器本身。根据解释器的>版本,可能会有更多此类模块>sys.builtin_module_names>列出所有这些模块。

    值得强调的是,“sys”模块内置在python解释器、cpython或jpython或其他程序中。

    你不会发现像普通模块那样的“sys.py”。

    帮助(sys)将显示以下信息

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

    相比之下: 帮助(OS)

    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”)的一部分。