Python package setup script install binary executable
I just ran into this issue myself. My solution was three-fold.
I added the program, e.g.
awesometool
, to my package structure so I could add it via thepackage_data
keyword:package_data={'awesomepkg': ['awesometool']}
. This causes it to actually be copied into the same folder as the main init.py during installation.I made a python script similar to your step 2. However, instead of the relative path, I first import
awesomepkg
and useawesomepkg.__path__
to get the absolute path to the installation folder for the package. This would look like:import awesomepkg import subprocess as sp import sys path = awesomepkg.__path__[0] command = path + "/awesometool" sp.call([command] + sys.argv)
I also used subprocess instead of system, but the result should be the same.
I added this script to the
scripts
keyword ofsetup()