Python application structure

Directory layout

src/
    cli.py OR app.py
    constants.py
    __init__.py
tests/
requirements.txt
setup.py

requirements.txt

Dependencies used within the venv for the project, e.g:

google-auth==1.35.0
google-auth-httplib2==0.1.0
google-auth-oauthlib==0.4.6
google-api-python-client==2.26.1
gspread==3.7.0
requests==2.25.1
oauth2client==4.1.3

setup.py

The declaration file for the application, equivalent to package.json, e.g:

from setuptools import setup, find_packages

setup(
    name="eolas-db",
    version="0.1",
    packages=find_packages(where="src"),
    package_dir={"": "src"},
    install_requires=[
        # List your project dependencies here
    ],
    entry_points={
        "console_scripts": [
            "eolas-db=cli:main",
        ],
    },
)

The entry_points key is important. This is the first execution point of the application. Typically you would name your entry-point script as app.py or cli.py and then specify its main function.

E.g. in cli.py:

def main():
    print('run the application')

if __name__ == "__main__":
    main()

__init__.py

See Python_modules_and_imports#distinguishing-_modules_-from-_packages_|Python modules]]