Where is the __builtin__ module in Python3? Why was it renamed?

Python

Python Problem Overview


I was curious about the __builtin__ module and how it's used, but I can't find it in Python3! Why was it moved?

Python 2.7

>>> import __builtin__
>>>

Python 3.2

>>> import __builtin__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named __builtin__
>>>

Python Solutions


Solution 1 - Python

The __builtin__ module was renamed to builtins in Python3.

This change solves 2 sources of confusion for the average Python developer.

  • Is it '__builtins__' or '__builtin__' that is in the global namespace? Darn s!
  • Is __builtin__ a special method name or a module? I can't tell.

This confusion mainly arises because of the violation of pep8 convention. Also, the lack of pluralization on the module hinders communication as well. Both of these are greatly illustrated by the lengths Guido must go to explain the following from http://mail.python.org/pipermail/python-ideas/2009-March/003821.html:

> [CPython] looks at the globals, which contain a special magic entry > __builtins__ (with an 's') which is the dict where built-in functions are looked up. When this dict is the same object as the default > built-in dict (which is __builtin__.__dict__ where __builtin__ -- > without 's' -- is the module defining the built-in functions) it gives > you supervisor privileges;…

For example,

Python2.7

>>> import __builtin__
>>> vars(globals()['__builtins__']) is vars(__builtin__)
True
>>> 

Python3.2

>>> import builtins
>>> vars(globals()['__builtins__']) is vars(builtins)
True
>>>

Related resources:

Other name changes - http://docs.pythonsprints.com/python3_porting/py-porting.html#name-changes

For a succinct explanation of how __builtins__ is used in name resolution - https://stackoverflow.com/questions/5325021/builtin-module-in-python

Solution 2 - Python

remove all pyc file and run again thats all

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDerek LitzView Question on Stackoverflow
Solution 1 - PythonDerek LitzView Answer on Stackoverflow
Solution 2 - PythoncsseloView Answer on Stackoverflow