title: What is the proper way to work with shared modules in Python development?
body: <p>I'm working toward adopting Python as part of my team's development tool suite. With the other languages/tools we use, we develop many reusable functions and classes that are specific to the work we do. This standardizes the way we do things and saves a lot of wheel re-inventing.</p>
  
  <p>I can't seem to find any examples of how this is usually handled with Python. Right now I have a development folder on a local drive, with multiple project folders below that, and an additional "common" folder containing packages and modules with re-usable classes and functions. These "common" modules are imported by modules within multiple projects.</p>
  
  <pre><code>Development/
      Common/
          Package_a/
          Package_b/
      Project1/
          Package1_1/
          Package1_2/
      Project2/
          Package2_1/
          Package2_2/
  </code></pre>
  
  <p>In trying to learn how to distribute a Python application, it seems that there is an assumption that all referenced packages are below the top-level project folder, not collateral to it. The thought also occurred to me that perhaps the correct approach is to develop common/framework modules in a separate project, and once tested, deploy those to each developer's environment by installing to the site-packages folder. However, that also raises questions re distribution.</p>
  
  <p>Can anyone shed light on this, or point me to a resource that discusses this issue?</p>