Since a package, like a module, is both a file system location and
a Python construct, the name must be a valid Python name, using just
letters, numbers and _
's. Additionally, some file systems
are cavalier about maintaining the original case of the filename. The
old Mac OS (pre Mac OS X), and many of the old Windows variants would
casually alter the case of filenames.
Consequently, package and module names should be all lower case.
This way, there is no ambiguity about the intended case of the module
name.
Package structures should be relatively flat. The general rule is
to keep the package structure relatively flat. Having only one module at
the bottom of deeply-nested packages isn't really very informative or
helpful. While it may seem like import
casino.games.definitions.tablegames.dicegames.craps
leaves lots
of room for expansion, there just aren't enough casino games to make
this immensly deep structure usable.
Packages are generally used for two things:
-
Collecting related modules together in a directory to simplify
installation, maintenenace and documentation.
-
Defining alternative implementations as simply as
possible.
If all of your modules are more-or-less unique, then a package
structure isn't going to help. Similarly, if you don't have alternate
implementations of some driver or interface, a package structure isn't
useful.