What is a very *simple* way to structure a python project?

Viewed 1336

So I have this python thing that needs to process a file.

First it was:

my_project/
├── script.py

And I would simply run it with python script.py file.csv.

Then it grew and became:

my_project/
├── script.py
├── util/
│   └── string_util.py
├── services/
│   └── my_service.py

(There is an empty __init__.pyin every directory)

But now my_service.py would like to use string_util.py and it's so damn not straightforward how to do this nicely.

I would like to do from ..util import string_util in my_service.py (which is imported into script.py with from services import my_service), but that does not work with python script.py since my_service's __name__ is then only services.my_service (and I get the Attempted relative import beyond toplevel package)

  • I can do cd .. and python -m my_project.script, but that seems so unnatural and would be really bad to put it in the README for the instructions how to run this.

  • Right now I'm solving it with the ugly sys.path.append() hack.

What other options do I have?

1 Answers
Related