捆绑修改后的模块是否是糟糕的编码实践?

6 浏览
0 Comments

捆绑修改后的模块是否是糟糕的编码实践?

有时候在处理一个大型包时,我会发现其中一个依赖的行为非常难以解决,有时候唯一的解决办法就是修改依赖中的一个模块,并等待开发人员提供修复或新功能的版本。举个具体的例子,假设这个问题出现在matplotlib.legend.py中。下面是我的项目可能的打包方式:

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

在matplotlib发布修复某些错误或实现某些功能的新版本之前,我只需这样调用:

from bundled.legend import X,Y,Z

显然,这种方法有时有效,但通常我需要打包多个模块来实现所需的行为。

有时候这是我继续项目的唯一方式,但我不知道其他工程师对这种做法会有什么反应。在Python中,这种做法可接受吗?很多时候,这不仅仅是为了解决问题,还包括自定义或向myproject添加一些特定功能,而这些功能深入到了模块中。

0
0 Comments

在上述情况下,当用户安装了一个较旧版本的legend并且安装了带有新版本bundled的legend的包时,代码中的from bundled.legend import X语句将会出现问题。因为在legend.x中的from legend import Y语句可能会从用户安装的旧版本的legend中导入Y。这是一个潜在的问题,需要解决。

解决方法是嵌入Python库到自己的包中。可以通过以下链接查看更多信息:Embedding a Python library in my own package。

感谢这些问题的提出,这正是我试图预见的问题。谢谢提供的链接。

0