使用 setup.py 安装,如何生成一个工作的独立命令行脚本



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

我的项目树(简体(如下所示:

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

以 Kenneth Reitz 的例子为基础,这是我 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 命令,而无需进一步调整或包含完整路径?

这可以解决您的问题。

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

在您的情况下,请尝试

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

最新更新