[Tutor] When are "__init__.py" files needed and not needed in a project?

boB Stepp robertvstepp at gmail.com
Sat Oct 20 10:53:39 EDT 2018

Linux Mint 19 Cinnamon, Python 3.6.6

I would have sworn that I had read, either on this list or the main
Python list, that in the most recent versions of Python 3 that
"__init__.py" files were no longer needed in nested project file
structures.  But when I attempted to run tests for the first time on
my new Solitaire Scorekeeper project (Finally getting around to
this!), I got:

bob at Dream-Machine1:~/Projects/solitaire_scorekeeper$ python3 -m unittest

Ran 0 tests in 0.000s


So no tests were run.  So it immediately occurred to me to add an
empty "__init__.py" file to my "tests" subfolder and got what I was
currently expecting:

bob at Dream-Machine1:~/Projects/solitaire_scorekeeper$ python3 -m unittest
ERROR: test_get_gamenames_bad_path (tests.tests_main.TestGameNamesMapperMethods)
Test that when the method, get_gamenames(), is passed a path to a
Traceback (most recent call last):
  File "/home/bob/Projects/solitaire_scorekeeper/tests/tests_main.py",
line 20, in test_get_gamenames_bad_path
    self.assertEqual(gamenames.gamenames(), {})
NameError: name 'self' is not defined

Ran 1 test in 0.000s

FAILED (errors=1)

I was expecting this error and will shortly correct it.  So my
question remains, when are "__init__.py" files needed and when are
they not?

In case it helps, my current project structure is:




More information about the Tutor mailing list