Python ищет модули в перечисленных каталогах в sys.path
Так же, как если бы вы определили свой собственный модуль в пути, который не распознается Python, где вы должны добавить его в переменная окружения PYTHONPATH, чтобы включить ее в каталоги, перечисленные в sys.path, а затем импортировать ее
~$ # let's see contents of sys.path
~$ python3
Python 3.8.2 (default, Mar 13 2020, 10:14:16)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
>>> exit()
~$
~$ # now, let's try to see contents of /usr/lib/python3.8
~$ cd /usr/lib/python3.8
python3.8$
python3.8$ # list and grep the contents of some files
python3.8$ ls | grep random
random.py
python3.8$ cat random.py | grep "class Random"
class Random(_random.Random):
python3.8$ ls | grep collections
collections
_collections_abc.py
python3.8$ ls collections/
abc.py __init__.py __pycache__
python3.8$ cat collections/__init__.py | grep "def namedtuple"
def namedtuple(typename, field_names, *, rename=False, defaults=None, module=None):
python3.8$ cat collections/__init__.py | grep "class OrderedDict"
class OrderedDict(dict):
python3.8$ cat collections/__init__.py | grep "class Counter"
class Counter(dict):