如何构建一个安装后可以从终端全局初始化的Python应用程序



对于许多常见的python应用程序,从终端调用包通常会通过类似spydersphinx-quickstart的方式初始化应用程序。下载后,我如何在自己的应用程序中设置这种功能?

我能得到的最接近的是,比如说,对于某个名为application的应用程序,用承载启动协议的__init__.py文件调用python -m application(这很有效,但一旦退出应用程序,控制台中就会出现一个错误,说"No module named application.__main__"——有点有趣,因为它运行得很好(。我只是想知道做这件事的更好方法是什么

您的setup.py需要有console_scripts。这篇文章解释得很好,但tl;dr是如果你有例如

mypackage/__init__.py
mypackage/__main__.py

其中mypackage/__main__.py看起来像

def main():
print('Hi!')
if __name__ == "__main__":
main()

您已经可以使用python -m mypackage运行此操作。

那么console_scripts节看起来像

setup(
...
entry_points = {
'console_scripts': ['greet=mypackage.__main__:main'],
}
...
)

pip install将创建控制台脚本填充程序。(对于开发,您可能会在工作副本目录中运行pip install -e .。(

最新更新