捆绑修改后的模块是不好的编码实践?

时间:2015-01-22 00:01:09

标签: python

有时当我在一个大包装中工作时,我会发现在其中一个依赖项中很难解决这种行为,有时候这是唯一的方法实现解决方案并继续前进是更改依赖项中的模块并等待开发人员的修复或新功能。为了使这更具体,想象一下解决方法是在matplotlib.legend.py中。以下是我的项目打包方式:

myproject
   bundled
       legend.py
   a.py
   b.py
   c.py

直到新版本的matplotlib发布,修复了一些bug或实现了一些功能,我才打电话:

from bundled.legend import X,Y,Z

显然这有时会起作用,但我经常需要捆绑几个模块来获取行为。

有时这样做是我在项目上取得进展的唯一方法,但我不知道其他工程师如何对这种做法做出反应。这是python中可接受的做法吗?很多时候,不仅仅是解决这个问题的解决方法,而是自定义或添加特定于myproject的特定功能,这些功能深入到模块中。

1 个答案:

答案 0 :(得分:2)

这并不总是如您所愿。想象一下以下情况。

  1. 用户安装非常旧版本的图例。
  2. 用户使用较新的捆绑版本的图例
  3. 安装您的软件包

    现在,在你的代码中,你做了

    from bundled.legend import X
    

    但是,在legend.x中说是

    from legend import Y
    

    它可以从用户安装的旧版图例中导入Y.

    您可能需要查看:Embedding a Python library in my own package