如何在安装脚本中处理有shebang行的脚本?

时间:2015-11-13 20:01:18

标签: python distutils setup.py shebang

我的分发源有以下结构:

|project
    |setup.py
    |project.py
    |package
        |__init__.py
        |code.py

project.py是主要脚本,它有shebang line

我应该在setup.py中以某种方式定义上述事实吗?

1 个答案:

答案 0 :(得分:1)

您需要查看setuptools console_scripts entry point

说你的project.py目前包含这样的内容:

if __name__ == '__main__':
    run_proj()

您需要先移动project.py package目录,才能从setup.py引用它。然后,将run_proj函数注册到console_scripts入口点,如下所示:

<强> setup.py

setup(
    # other arguments here...
    entry_points={
        'console_scripts': [
            'run-proj = package.project:run_proj',
        ],
    }
)

之后,您需要重新运行setup.py,例如执行python setup.py develop,或者在开发过程中使用的任何方法。

然后,您将获得一个调用bin/run-proj的{​​{1}}脚本,并可以从命令行调用。 (如果您在虚拟环境中安装软件包,该软件包将在run_proj()中,或者您在系统范围内安装软件包,如venv/bin/run-proj,则视您的操作系统/发行版而定。

该脚本实际上应该在您的路径上,因此您应该能够从shell运行usr/local/bin/run-proj

此时,shebang行不再是必需的,你可以删除它(run-proj会有一个自动生成的shebang指向正确的Python解释器。)