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

标签 python distutils setup.py shebang

我的分发源结构如下:

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

project.py 是主脚本,它有 shebang 行

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

最佳答案

您需要查看设置工具 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调用 run_proj() 的脚本,并且可以从命令行调用。 (如果您在虚拟环境中安装该软件包,则该软件包将位于 venv/bin/run-proj 中,或者如果您在系统范围内安装它,则位于类似 usr/local/bin/run-proj 的位置,具体取决于您的操作系统/发行版)。

该脚本实际上应该在您的路径上,因此您应该能够运行 run-proj来自外壳。

此时,shebang 行实际上不再需要了,您可以将其删除(bin/run-proj 将有一个自动生成的 shebang 指向正确的 Python 解释器)。

关于python - 如何处理安装脚本中有 shebang 行的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700859/

相关文章:

python - 根据另一个数组对齐 numpy 数组

python - makemigrations reponses 指定 app_label 时未检测到任何更改

python - 通过字典访问函数

python - 在 setup.py 中清理 C++ 扩展构建目录

python - Distutils - 如何在构建扩展时禁用包括调试符号

python - 为什么 `setup.py develop` 不起作用?

python - pip install --process-dependency-links app.whl 不安装私有(private)存储库( fork 库)

Python:按唯一值分隔列表

python - setup.py 从文件上传

python - Django:无法迁移从源代码安装的应用程序