python - 如何使 python 命令行应用程序在全球范围内可访问?
问题描述
我使用 python 编写了一个命令行应用程序。问题是我希望用户可以在安装命令行后全局使用该命令。我编写了命令行,我发布了包,但我不知道如何让这个包作为系统命令对用户全局可用。
例子 :
pip install forosi
之后,用户可以从他们想要的任何地方全局运行此命令。像 :
forosi help
解决方案
我将假设您src/forosi.py
在包目录中拥有应该运行的主文件,但如果它不同,您应该能够适应它。
首先,您要将脚本重命名为
forosi
,不带.py
扩展名。其次,在文件顶部(现在称为
forosi
)添加以下内容:
#!/usr/bin/env python3
... rest of file...
- 在您的
setup.py
for 包中,您需要使用该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/*
推荐阅读
- avro - Presto 无法读取 hive 上的 avro 表
- snowflake-cloud-data-platform - 杀死所有查询并单次使用 rmode Snowflake
- azure - KQL 表中的可扩展行分组
- python - 如何比较列表并将它们分组到一个新列表中?
- amazon-web-services - 根据表达式值在语句内启用/禁用 HashiCorp Terraform 条件约束块
- user-interface - 是否有任何最佳实践/教程/等。用于基于 UI 状态管理 UI?
- wordpress - NGINX - 某些路径的不同根
- stripe-payments - Stripe SDK android 给用户返现
- simulation - 在行人库中定义行程时间
- r - 如何从 R 中的另一个数据框中展平数据框变量