我应该在setup.py中有条件地要求simplejson吗?

时间:2011-02-15 19:50:32

标签: python json

我在我的模块中有条件地导入simplejson / json,如下所示:

try:
    import simplejson as json
except ImportError:
    import json

但是,在我的setup.py中,如果用户拥有标准库中的json,我不想要求simplejson。我可以这样做:

requires = ['kitchen']
try:
    import simplejson
except ImportError:
    requires.append('simplejson')

setup(..., requires=requires)

这是setup.py文件的一个好习惯吗?我应该用别的吗?我应该直接要求simplejson吗?

1 个答案:

答案 0 :(得分:3)

简短回答 - 不,这不是一个好习惯。

使用distutils,zc.buildout等的一个关键概念是可重复性。添加此类条件时,您无法打包鸡蛋,因为它只能在某些机器上运行。当您在每台计算机上手动安装它时,simplejson和json之间的差异可能会破坏您的应用程序。想象一下你不知道的一些错误,等等。你必须确保它适用于两个库。最佳做法是明确要求不仅要求依赖性,还需要确切的版本。