__init__.py files help reduce redundancy in import

https://stackoverflow.com/questions/17457782/how-to-structure-python-packages-without-repeating-top-level-name-for-import

extra to be added

from keynote

cookiecutter

tox

travis CI

setuptools

python setup.py install install into site-package directory python setup.py develop create symlinks to site-package directory(The same as things I did before)

setup.py arguments in setup()

py_modules list of single python modules.

packages list of folders that contain the modules

./setup.py develop or pip install -e . Develope mode

Creates symlinks in site-package path so that reinstallation is not neede when code changes

data files

MANIFEST.in add files to soure distribution. So NOT in wheel but in source. useful when data is used in build time.

include_package_data = True + MANIFEST.in include data file into the final package directory. Useful when data is used in the runtime

only package_data include data into both source distribution and final package directory

setup(
    ...
    package_data = {
    dir_of_data: [data_if_self], # the data's location is relative to setup.py
    },
)