You need a target to cover every file that you want Pants to know about. A good default is to have one BUILD file per distinct directory:
https://www.pantsbuild.org/docs/targets#target-granularity
As Danny explained, you can also have coarser targets that cover subdirectories too by using recursive globs like
**/*.py
in the
sources
field