开发者

setup.py and adding file to /bin/

开发者 https://www.devze.com 2023-02-07 05:46 出处:网络
I can\'t figure开发者_高级运维 out how to make setup.py add a scrip to the the user\'s /bin or /usr/bin or whatever.

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.


Consider using console_scripts:

from setuptools import setup
setup(name='some-name',
      ...
      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.

setup(...,
      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.

setup(name='myproject',author='',author_email='',scripts=['bin/myscript.py'])

  • 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!
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号