title: If Python Packaging is implicit since 3.3, why does my interpreter not treat all subdirectories as packages?
body: <p>I am barely understanding Python packages.</p>
  <p>If packaging is implicit since 3.3, why does this directory structure:</p>
  <pre class="lang-none prettyprint-override"><code>outer_dir/
      outside_main.py
      package_example/
          module_main.py
          tests/
              test_1.py
              …
          level_1/
              foo_1.py
              level_2/
                  foo_2.py
  </code></pre>
  <p>With these files:</p>
  <pre class="lang-py prettyprint-override"><code># module_main.py
  
  from level_1.foo_1 import foo_function_1
  from level_1.level_2.foo_2 import foo_function_2
  
  
  def main():
      print(foo_1())
      print(foo_2())
  
  
  if __name__ == &quot;__main__&quot;:
      main()
  </code></pre>
  <pre class="lang-py prettyprint-override"><code># outside_main.py
  
  from package_example.module_main import main
  
  if __name__ == &quot;__main__&quot;:
      main()
  </code></pre>
  <p>Give me this error:</p>
  <pre class="lang-none prettyprint-override"><code>Traceback (most recent call last):
    File &quot;/path/to/outside_main.py&quot;, line 1, in &lt;module&gt;
      from module_example.module_main import main
    File &quot;/path/to/module_example/module_main.py&quot;, line 1, in &lt;module&gt;
      from level_1.foo_1 import foo_function_1
  ModuleNotFoundError: No module named 'level_1'
  </code></pre>
  <p>Shouldn't <code>tests/</code> and <code>level_1</code> be implicitly treated as sub-packages of <code>package_example/</code>?</p>
  <p>Would the situation resolve itself if I littered the directories with indiscriminate <code>__init__.py</code> files?</p>