我正在编写一个CLI python应用程序,它依赖于一些库(Paramiko等)。 如果我下载他们的源代码并将它们放在我的主应用程序源下,我可以导入它们,一切正常。 为什么我需要运行他们的setup.py安装程序或处理python包管理器?
据我所知,在部署服务器端应用程序时,管理员可以运行easy_install / pip命令等来安装prerequsites,但是对于像CLI应用程序这样的脚本必须作为独立的应用程序进行分发在python二进制文件中,推荐的方法是什么?
答案 0 :(得分:2)
有几个原因:
并非所有包都是纯python包。在您的包中包含C扩展并且setup.py
自动化编译过程很容易。
自动化依赖管理;安装程序工具(pip
,easy_install
,zc.buildout
)为您声明并安装了依赖项。依赖关系也可以动态声明(尝试导入json
,如果失败,则声明对simplejson
的依赖等)。
自定义资源安装设置。安装过程具有高度可配置性和动态性。依赖检测也是如此;例如,cx_Oracle
必须通过所有各种平台和它需要支持的Oracle库分发选项的怪癖才能直接进行安装。
为什么还要为CLI脚本执行此操作?这取决于CLI对您的重要程度;你会在未来几年保持这个吗?然后我仍然使用setup.py
,因为文档依赖项是什么,包括最小版本需求。您可以添加测试(python setup.py test
),并轻松部署到新位置或升级依赖项。