[英]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腳本不能解決我的問題。
這里有一個關於如何告訴 setuptools 在 pip 安裝期間將腳本添加到 Python Scripts 文件夾的解釋。 然后,您可以將該腳本設置為例如調用 Python 腳本的 bat 文件。 通過這種方式,您既不需要編寫.py
來運行腳本,又可以自動執行。
我知道這已經得到了回答,但以防萬一將來有人遇到這個問題..
這是我從許多不同來源閱讀后正在開發的新軟件包的工作原理。
tldr; 使用setuptools
並將您的命令添加為setup.cfg
[options.entry_points]
下的console_scripts
選項。
您還需要setup.cfg
或setup.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.