How to organize a Python Project?
A Package is basically a folder with __init__.py
file under it and usually some Modules, where Module is a *.py
file.
It has to do with import
mainly. If you add __init__.py
to Indicators you can use:
from Indicators.Stochastics import *
or
from Indicators import Stochastics
By the way, I would recommend to keep module/package names lowercase. It does not affect functionality but it's more "pythonic".
From a file system perspective, a module is a file ending with .py
and a package is a folder containing modules and (nested) packages again. Python recognizes a folder as a package if it contains a __init__.py
file.
A file structure like that
some/
__init__.py
foofoo.py
thing/
__init__.py
barbar.py
defines the package some
, which has a module foofoo
and a nested package thing
, which again has a module barbar
. However, when using packages and modules, you don't really distinguish these two types:
import some
some.dothis() # dothis is defined in 'some/__init__.py'
import some.foofoo # <- module
import some.thing # <- package
Please follow PEP8 when selecting naming your packages/modules (i.e. use lower-case names).