如何使python命令行应用程序可以全局访问?

如何使python命令行应用程序可以全局访问?,python,command-line-interface,Python,Command Line Interface,我用python编写了一个命令行应用程序。 问题是我希望用户在安装命令行后可以全局使用该命令。 我编写了命令行,发布了这个包,但我不知道如何让这个包作为系统命令全局地供用户使用 例如: pip install forosi 之后,用户可以在任何地方全局运行该命令。比如: forosi help 我假设您的包目录中有一个应该在src/forosi.py中运行的主文件,但是如果它不同,您应该能够调整它 首先,您希望将脚本重命名为forosi,而不使用.py扩展名 其次,在文件顶部(现在称为f

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

例如:

pip install forosi
之后,用户可以在任何地方全局运行该命令。比如:

forosi help

我假设您的包目录中有一个应该在
src/forosi.py
中运行的主文件,但是如果它不同,您应该能够调整它

  • 首先,您希望将脚本重命名为
    forosi
    ,而不使用
    .py
    扩展名

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

  • 在软件包的
    setup.py
    中,您需要使用
    scripts
    选项
setuptools.setup(
...
脚本=['src/forosi'],
...
)

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

设置(
...
入口点={
'控制台脚本':['src.forosi:main'],
}
...
)

在这两种情况下,要在本地构建包,请运行

python3 setup.py bdist_wheel
这将在
dist/
目录中创建一个名为
package\u name-version--.whl
的控制盘文件。这是pypi包的官方发行版

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

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

能否添加有关在本地安装此类软件包的说明?如果我的cli有3个命令,该怎么办?像“forosi login”、“forosi logout”@Phineas如果您想在本地安装,首先运行
python3 setup.py bdist\u wheel
,然后运行
pip3 install dist/*
@tokyodeloveler在这种情况下,您必须使
forosi
脚本处理参数。我建议调查一下,我认为在您的答案中添加安装说明会很有用
pip3 install dist/package_name-version-<info>-.whl
pip3 install dist/*