title: How to pack and distribute python program (.py source code) so that other developers can easily install all required dependencies?
body: <p>I'm developing a Python application built with some packages I've installed with pip such as Flask, requests, PIL.</p>
  
  <p>So how can I distribute my program so that other people can easily install every required dependency/package and simply make it work on every computer? Is setup.py what I'm looking for or not at all? If so, could you please explain what it does and provide an example setup.py that does what I'm trying to do?</p>
  
  <p>PS: I've also got this little question: do I need to provide a __init__.py in the top level folder of my program or just in subdirectories?</p>