我如何设置 python CLI 应用程序,以便我可以在不直接引用解释器的情况下使用它?

How can I setup a python CLI application so that I can use it without directly referring to the interpreter?

我想构建一个名为 helloworld 的应用程序,在 python 中有一个命令行界面。我的应用程序作为多个嵌套模块和一个顶级模块 main.py.

说布局是:

helloworld/
   helloworld/
      __init__.py
      module1/
      module2/
      module3/
   setup.py
   main.py

此时,一旦安装了我的项目,我就可以 运行 使用 #> python path/to/helloworld/main.py arg1 arg2 arg3

我希望能够使用以下命令与程序交互: #> helloworld arg1 arg2 arg3,以类似的方式,例如,Flask 框架带有一个命令行应用程序,我可以使用 #> flask run

我环顾四周,发现了一些建议使用 shebang 的问题。据我所知,这不是我想要的。

我想要一个独立的应用程序,我可以使用 pip 安装然后直接启动而不需要任何参考 python 解释器。

我该怎么办?

编辑

对我来说一个重要的要求是可以使用 pip 安装软件包并且命令行界面立即可用。 Shebangs/fiddling 手动使用 path/creating 额外的 shell 脚本无法解决我的问题。

您应该将 main.py 添加到您的 PATH 中。当你 运行 宁 flask run 时会发生什么是你的终端在 PATH 中查找命令烧瓶和 运行s 它指向的程序。您可以将其视为 Flask 程序的一种快捷方式。

通过将您的程序添加到您的 PATH,您可以告诉计算机如果您在终端中键入 helloworld,终端应该 运行 /my/path/to/helloworld.py.

我不知道 OS 你在看什么,所以这里是关于如何添加 PATH 变量的最常见 OS 的链接。

Windows

Linux

Mac OSX

编辑:在您给出更多解释后,setuptools 就是您要查找的内容。请查看 this 参考以了解如何使用它。

关于如何在 pip 安装期间告诉 setuptools 添加脚本到 Python Scripts-folder 的解释 here。然后,您可以将该脚本设为例如调用您的 Python-script 的 bat-file。通过这种方式,您既不需要为脚本编写 .py 到 运行,又会自动发生。