How should I organize Python source code?
code-organization, python, unit-testing
Solution
The article Eric pointed to is awesome because it covers details of organising large Python code bases.
If you've landed here from Google and are trying to find out how to split one large source file into multiple, more manageable, files I'll summarise the process briefly.
Assume you currently have everything in a file called `main.py`:
- Create another source file in the same folder (let's call ours `utils.py` for this example)
- Move whatever classes, functions, statements, etc you need from `main.py` into `utils.py`
- In `main.py` add a single line at the top: `import utils`
Conceptually what this does is to create a new module called `utils` in another source file. You can then import it wherever it's needed.
Problem
I'm getting started with Python (it's high time I give it a shot), and I'm looking for some best practices. My first project is a queue which runs command-line experiments in multiple threads. I'm starting to get a very long `main.py` file, and I'd like to break it up. In general, I'm looking for: How do python programmers organize multiple source files? Is there a particular structure that works for you? My specific questions include: - Should each class be in a separate file? - How should I organize unit tests relative to source code? - Where should I put doc comments, specifically those for command-line operation? - If I use multiple directories, how do I import classes between them? I can probably draw some of my own conclusions here by trial and error, but I'd rather start from something good.