我们为工作中的各种代码保留了一个python库.它是一种分享代码,只实现一次,保持一致等的好方法.它的一部分取决于外部库,并且有一些对此有所影响,其中没有一种感觉正确.
一种解决方案是将整个外部库包含在我们的库中.争论的焦点是外部库的版本可以被控制,但这增加了一堆代码,很难看并且感觉不到pythonic.
try import如果导入失败,另一个解决方案是打印错误.这感觉很好,是pep8,但是我们的库有很多种模块,你经常需要它的一部分,而不是另一部分.使用此解决方案,您会在不影响您的情况下看到错误.有抱怨.
try:
import zmq
import simplejson
except:
print "Install zmq and simplejson to use the LiveFeedSubscription()."
Run Code Online (Sandbox Code Playgroud)
我提议try imports加入Class __init__(解决上面的问题),但它不是pep8; 并且可以说更难以分辨出依赖关系是什么,因为它们没有被导入模块的顶部.
def __init__(self, msg_type='', msg_types=[], debug=False):
try:
import zmq
import simplejson
except:
print "Install zmq and simplejson to use the LiveFeedSubscription()."
Run Code Online (Sandbox Code Playgroud)
将外部库包含在具有如此大的不同模块的库中的python最佳实践是什么?
请改用适当的setup.py安装脚本,列出您的依赖项.请参阅Python Packaging用户指南和Setuptools文档.
如工具easy_install,pip或zc.buildout根据需要也将安装您的依赖.