### 3.3.1 Extension names and packages

The first argument to the `Extension` constructor is always the name of the extension, including any package names. For example,

      Extension("foo", ["src/foo1.c", "src/foo2.c"])

describes an extension that lives in the root package, while

      Extension("pkg.foo", ["src/foo1.c", "src/foo2.c"])

describes the same extension in the `pkg` package. The source files and resulting object code are identical in both cases; the only difference is where in the filesystem (and therefore where in Python's namespace hierarchy) the resulting extension lives.

If you have a number of extensions all in the same package (or all under the same base package), use the ext_package keyword argument to `setup()`. For example,

      setup(...
            ext_package = "pkg",
            ext_modules = [Extension("foo", ["foo.c"]),
                           Extension("subpkg.bar", ["bar.c"])]
           )

will compile foo.c to the extension `pkg.foo`, and bar.c to `pkg.subpkg.bar`.