5

My project structure:

/myproject/       <- I would like to skip that folder
  /mypackage/
    /subpackage/
      mymodule.py
    run.py
- setup.py

Within run.py I'd like to import from mymodule.py like that:

from mypackage.subpackage.mymodule import something

instead of:

from myproject.mypackage.subpackage.mymodule import something

Is there a way in setup() to define the entrypoint as being mypackage and skip myproject?

Mr. B.
  • 8,041
  • 14
  • 67
  • 117

1 Answers1

5

You can use what's called a src-layout (since src/ is more typically used as a top-level directory for packages. See https://setuptools.readthedocs.io/en/latest/setuptools.html#using-a-src-layout

If using setup.cfg you can write this like:

[options]
package_dir=
    =src
packages=find:

[options.packages.find]
where=src

or equivalently, using an old-style setup.py:

from setuptools import find_packages
setup(
...
    package_dir={'': 'src'}
    packages=find_packages(where='src')
...
)

packages

Iguananaut
  • 21,810
  • 5
  • 50
  • 63