• Uncategorized

About python : setuppy-and-adding-file-to-bin

Question Detail

I can’t figure out how to make setup.py add a scrip to the the user’s /bin or /usr/bin or whatever.

E.g., I’d like to add a myscript.py to /usr/bin so that the user can call myscript.py from any directory.

Question Answer

Consider using console_scripts:

from setuptools import setup
      entry_points = {
              'console_scripts': [
                  'command-name = package.module:main_func_name',                  

Where main_func_name is a main function in your main module.
command-name is a name under which it will be saved in /usr/local/bin/ (usually)

The Python documentation explains it under the installing scripts section.

Scripts are files containing Python source code, intended to be started from the command line.

      scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']

As mentioned here, beside scripts, there is an entry_points mechanism, which is more cross-platform.

With entry_points you connect a command line tool name with a function of your choice, whereas scripts could point to any file (e.g. a shell script).

There are two ways in order to get a working command line tool from setuptools and PyPI infrastructure:

  1. The “scripts” Keyword Argument

    This allows the command-line execution of everything you want, it can be a Python script, a shell script or something completely different.
  2. The “console_scripts” Entry Point

    This allows Python functions (not scripts!) to be directly registered as command-line accessible tools.

If you’re willing to build and install the entire python package, this is how I would go about it:

  • Edit the setup() function in setup.py to contain a parameter named scripts and set its argument as the location of the file(s) you wish to run from anywhere. e.g.


  • Within the directory that contains setup.py, create a bin directory by typing mkdir bin
  • Add myscript.py to this newly-created bin directory (and make sure it’s executable!)
  • cd into the directory that contains setup.py again, and install the entire python package by typing python setup.py install
  • Once the package is installed, you should be able to run myscript.py from anywhere on the system!

You may also like...

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.