首页 > 解决方案 > 如何使 python 命令行应用程序在全球范围内可访问?

问题描述

我使用 python 编写了一个命令行应用程序。问题是我希望用户可以在安装命令行后全局使用该命令。我编写了命令行,我发布了包,但我不知道如何让这个包作为系统命令对用户全局可用。

例子 :

pip install forosi

之后,用户可以从他们想要的任何地方全局运行此命令。像 :

forosi help

标签: pythoncommand-line-interface

解决方案


我将假设您src/forosi.py在包目录中拥有应该运行的主文件,但如果它不同,您应该能够适应它。

  • 首先,您要将脚本重命名为forosi,不带.py扩展名。

  • 其次,在文件顶部(现在称为forosi)添加以下内容:

#!/usr/bin/env python3

... rest of file...
  • 在您的setup.pyfor 包中,您需要使用该scripts选项。
setuptools.setup(
    ...
    scripts=['src/forosi'],
    ...
)

这是需要对代码进行最少重构的方法。如果您碰巧main()在作为脚本入口点的 python 文件之一中有一个函数,您可以将以下内容添加到 setup.py 中,而不是上面的:

setup(
    ...
    entry_points = {
        'console_scripts': ['src.forosi:main'],
    }
    ...
)

无论哪种情况,要在本地构建包,请运行

python3 setup.py bdist_wheel

这将在名为. 这是 pypi 包的官方发行版。dist/package_name-version-<info>-.whl

要安装此软件包,请运行:

pip3 install dist/package_name-version-<info>-.whl

或者如果您在 dist 文件夹中只有一个版本,只需

pip3 install dist/*

推荐阅读