title: Difference between entry_points/console_scripts and scripts in setup.py?
body: <p>There are basically two ways to install Python console scripts to my path by <code>setup.py</code>:</p>
  <pre><code>setup(
      ...
      entry_points = {
          'console_scripts': [
              'foo = package.module:func',
          ],
      }
  )
  </code></pre>
  <p>and</p>
  <pre><code>setup(
      ...
      scripts = [
          'scripts/myscript.sh'
      ]
  )
  </code></pre>
  <p>What are the differences? I see the first approach allows me to choose nice, specific name for my script, but are there any other differences? Different original purposes, compatibility (setuptools, distutils, ...?), usage, ...? I am quite confused and a nice elaborated reply could help me (and probably also others) to properly understand all this.</p>
  <p><strong>Update:</strong> Since I asked the question <a href="https://www.pypa.io/" rel="noreferrer">PyPA</a> published <a href="https://python-packaging-user-guide.readthedocs.io/guides/distributing-packages-using-setuptools/#scripts" rel="noreferrer">these cool docs on the topic</a>.</p>