使用setup.py install,如何生成一个可用的独立命令行脚本?

时间:2018-03-09 03:43:47

标签: python setup.py

我试图让我的Python命令行应用程序尽可能为我公司的某些Mac用户自行安装,方法是将其注册为"命令行可访问工具"使用here所述的setup.py

我的项目树(简化)看起来像这样:

my-app
 |-app.py
 |-setup.py

建立Kenneth Reitz's example,这是我的setup.py脚本:

setup(
    name=my-app,
    ...
    packages=find_packages(exclude=('tests',)),

    # For entry point. Based on https://stackoverflow.com/a/28471597/9381758.
    py_modules=['app'],

    # Based on https://stackoverflow.com/a/11717581/9381758.
    entry_points={
        'console_scripts': ['my-app = app:main']
    }
)

当我运行python setup.py install时,它将安装到我的pyenv目录:

~/.pyenv/versions/3.6.4/bin/my-app

这有效:

$ ~/.pyenv/versions/3.6.4/bin/my-app -h 
usage: my-app [-h]

这不是:

$ my-app -h 
-bash: my-app: command not found

是否有一种优雅的方式来更新我的setup.py脚本,以便安装后最终用户能够运行my-app命令而无需进一步调整或包含完整路径?

1 个答案:

答案 0 :(得分:0)

这可以解决您的问题。

setup(
    other args ...
    scripts = ['my-app/script.py']
)

在你的情况下试试

setup(
    other args ...
    scripts = ['app.py']
)