粗溶液
您的脚本只需要在用户的$PATH 中的某个位置(并且如果您不希望他们键入myCLI.py,则不要有扩展名)。此外,它需要以魔术注释 #!/usr/bin/env python3(如果您正在运行 Linux)开头并且是可执行的(在分发之前在 linux chmod +x myCLI 上)。或者,您可以使用所需操作系统的本机 shell 语言(对于 linux 为 sh)创建一个脚本,该脚本调用 python3 /path/to/script 或 python -m module 等。
如果你在没有 .py 的情况下命名你的主脚本,它会阻止你从其他任何地方导入它,所以通常的方法是有一个“入口点”脚本,它由以下内容组成:
#!/usr/bin/env python3
from myApp import main
main()
(请参阅the PyPa docs 进行讨论)
更好的解决方案
当然,您需要在最终用户的$PATH 中的某处部署您的入口点脚本。这可能更有趣,但幸运的是整个事情都由 setuptools 处理,您甚至不需要编写脚本:您只需要一个入口点函数:
使用 console_script 入口点来注册您的脚本接口。然后,您可以让工具链处理将这些接口转换为实际脚本的工作
official docs
你只需输入你的setup.py:
setup(
entry_points = {
'console_scripts': [
'PKG_NAME = package.module:func',
],
}
)
任何输入PKG_NAME 的人都会有效地运行package.module:func()(所以func 是你上面的入口点main() 函数)。
请参阅this question,了解这种方法相对于为每个平台编写单独脚本的旧方法的优点。
请注意,如果您不是将应用程序构建为 python 包,而是使用其他一些打包标准(archlinux PKGBUILD 或 .deb 或其他),您仍然可以采用相同的方法——只需编写入口点脚本如上所述,并让包将其放在用户的$PATH 中的某个位置。