簡體   English   中英

如何設置 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/用路徑手動擺弄/創建一個額外的shell腳本不能解決我的問題。

您應該將 main.py 添加到您的 PATH 中。 當你運行flask run時會發生什么,你的終端在 PATH 中查找命令 flask 並運行它指向的程序。 您可以將其視為 Flask 程序的一種快捷方式。

通過將程序添加到 PATH 中,您可以告訴計算機,如果您在終端中鍵入helloworld ,則終端應該運行/my/path/to/helloworld.py

我不知道您使用的是什么操作系統,因此這里是有關如何添加 PATH 變量的最常見操作系統的鏈接。

視窗

Linux

Mac OSX

編輯:在你給出更多解釋之后,你正在尋找setuptools 請查看參考以了解如何使用它。

這里有一個關於如何告訴 setuptools 在 pip 安裝期間將腳本添加到 Python Scripts 文件夾的解釋。 然后,您可以將該腳本設置為例如調用 Python 腳本的 bat 文件。 通過這種方式,您既不需要編寫.py來運行腳本,又可以自動執行。

我知道這已經得到了回答,但以防萬一將來有人遇到這個問題..

這是我從許多不同來源閱讀后正在開發的新軟件包的工作原理。

tldr; 使用setuptools並將您的命令添加為setup.cfg [options.entry_points]下的console_scripts選項。

您還需要setup.cfgsetup.py中的一些其他字段才能進行包發現。 查看 setuptools 文檔。

示例入口點:

[options.entry_points]
console_scripts =
    mycmd = mypackage.mymodule:myfunc

對於本地開發,您可以使用pip install -e . 這將允許您測試命令,就像您pip intall編輯它一樣。

或者,您可以創建一個__main__.py來在您從根目錄運行python -m mypackage時初始化您的模塊。

from mypackage import app


if __name__ == '__main__':
    app.main()

我個人選擇了兩者。 通常您的main.py (或我的示例中的app.py )屬於您的包而不是項目級目錄。 然后你也會在那里創建__main__.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM