如何制作全局可调用的python程序?

如何制作全局可调用的python程序?,python,terminal,command-line-interface,setuptools,Python,Terminal,Command Line Interface,Setuptools,我编写了一个模块并创建了setup.py来安装该模块: from setuptools import setup, find_packages setup( name='mymodule', version='0.1', packages=find_packages(exclude=['test', 'test.*']), include_package_data=True, platforms='any', install_requires=[

我编写了一个模块并创建了setup.py来安装该模块:

from setuptools import setup, find_packages

setup(
    name='mymodule',
    version='0.1',
    packages=find_packages(exclude=['test', 'test.*']),
    include_package_data=True,
    platforms='any',
    install_requires=[
        'lxml==3.3.5',
        'Pillow==3.0.0',
        'requests==2.2.1',
        'xmltodict==0.10.1',
        'pdfrw==0.2',
        'python-dotenv==0.4.0',
        'boto==2.39.0'
    ],
)
在同一个模块中,我还使用为该模块编写了一个命令行界面。我希望使此命令行界面全局可用,以便系统上的任何用户都可以执行以下操作:

$ mycliprogram -i inputfile.xml -o outputfile.txt
有人知道我如何在setup.py中包含
mycliprogram.py
,以便系统中的任何人都可以从命令行使用它吗

我将引用:

第一种方法是在单独的文件中编写脚本,例如您可以编写shell脚本:

funniest/
    funniest/
        __init__.py
        ...
    setup.py
    bin/
        funniest-joke
    ...
然后我们可以在setup()中声明脚本,如下所示:

setup(
    ...
    scripts=['bin/funniest-joke'],
    ...
)
安装软件包时,setuptools会将脚本复制到我们的路径,并使其可供一般使用:


$最有趣的笑话

您可以使用
控制台脚本
(如Sergey建议的那样)或
设置()中的
入口点
参数:

这将创建一个
myclyprogram
包装器,可通过
$PATH
访问该包装器,并在
mymodule
中调用
任何内容。因此,如果您通过
pip
setup.py
安装模块,您将能够使用直接从命令行提示符定义的任何选项调用
mycliprogram


<> >更多信息:

请考虑在回答中添加一些附加信息。如果链接断开,只有链接的答案在将来可能完全无用。
  entry_points={
      'console_scripts': [
          'mycliprogram=mymodule:whatever',
      ],
  },