对于许多常见的python应用程序,从终端调用包通常会通过类似spyder
或sphinx-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 .
。(