我有一个 Python 应用程序,我有一个关于打包的问题,这实际上不是一个 distutils 问题,而是一个关于如何组织和设置应用程序以便从命令行轻松使用它的问题。
假设应用程序包含一个包,并暂时假设我不一定想将其设为 distutils 包(尽管我可能会被劝阻。)
程序本身作为 SNMP 子代理,由 Net-SNMP 使用 pass_persist 运行。这对于这个问题并不是特别重要,它只是意味着整个程序是 exec'd,并读取 stdin 并在 stdout 上做出响应。
进一步假设代理以或多或少的规范 Python 方式构建
agent
__init__.py
main.py
<other modules at the same level>
main.py
是一个简单的程序,比如
#!/usr/bin/env python
import sys
def main(argv):
<initialize the environment, input output, logging and so on>
while <not done>:
<process an input>
<clean up and terminate>
if __name__ == '__main__':
main(sys.argv)
似乎只有几种方法可以组织它来运行:
将包放在站点包中的某个位置,并在 PATH 中有一个顶级程序,例如
#!/usr/bin/env python
from agent import main
main(sys.argv)
将包目录放在某处并使用运行它
/path/to/directory/agent/main.py
(凹凸版本是将代理目录放在路径中的某个位置,以便您可以运行main.py
)
或者第三种,更 Pythonic 和更酷的方法,让我可以安装代码并将一些我不知道的东西直接放入路径中。
谷歌搜索没有太大帮助,我怀疑这是那些“太愚蠢而无法回答”的问题之一。不幸的是,我太笨了,不知道这一点。