I have been reading about the function of __init__.py file. It is said that we need an empty __init__.py file in the folder which contains modules,
Yes, this works, as you can tell. The reason for the empty __init__.py file is to mark sub-folders as folders containing modules.
So a folder in PYTHONPATH is ok to have modules in it, but any subfolders of those folders have to have a __init__.py file in them to be able to import modules from them.