Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does it mean that the sys module is built into every python interpreter?

I am going through the official Python tutorial, and it says

One particular module deserves some attention: sys, which is built into every Python interpreter.

However, if I start the python interpreter and type, for example, sys.path, I get a NameError: name sys is not defined.

Thus, I need to import sys if I want to have access to it.

So what does it mean that it is 'built into every python interpreter' ?

like image 437
titiree Avatar asked Jan 02 '23 03:01

titiree


2 Answers

It simply means that

import sys

will succeed, regardless of which version of Python you're using. It comes with every Python installation. In contrast, e.g.,

import mpmath

will fail unless you've installed the mpmath package yourself, or it came bundled with the specific Python installation you're using.

like image 160
Tim Peters Avatar answered Jan 05 '23 17:01

Tim Peters


So what does it mean that it is 'built into every python interpreter' ?

The sys module is written in C and compiled into the Python interpreter itself. Depending on the version of the interpreter, there may be more modules of this kind — sys.builtin_module_names lists them all.
As you have noticed, a built-in module still needs to be imported like any other extension.

>>> 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')
like image 22
Eugene Yarmash Avatar answered Jan 05 '23 16:01

Eugene Yarmash