Whenever I do from 'x' import 'y' I was wondering which one is considered the 'module' and which is the 'package', and why it isn't the other way around?
2 Answers 2
x may be a package or a module and y is something inside that module/package.
A module is a .py file, a package is a folder with an __init__.py file. When you import a package as a module, the contents of __init__.py module are imported.
7 Comments
__init__.py file, and modules aren't necessarily .py files.__init__.py file in Python 3 and module maybe anything since import hooks were invented but these are exception for the above conventions. 99% of the time the above applies.A Python module is simply a Python source file, which can expose classes, functions and global variables.
When imported from another Python source file, the file name is treated as a namespace.
A Python package is simply a directory of Python module(s).
For example, imagine the following directory tree in /usr/lib/python/site-packages:
mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py
So then you would do:
import mypackage.mymodule
or
from mypackage.mymodule import myclass
xis the package andythe module, similar to "from the shopping bag take the apple", not the other way around.