我对包装pep8很感兴趣,这样我可以在使用前修补它。包装模块的“正确”方式是什么?在
如果我的模块名为pep8,并且在我的路径中位于实际pep8之前的某个地方,那么我模块中的任何“import pep8”都将只导入自己。我事先不知道真正的pep8将在哪里生存,因为这需要在多个系统中进行推广。我无法删除我的pep8包装器所在的路径搜索路径,因为这也会因执行它的系统而异。在
我不想重新命名pep8,因为我希望pep8命令可以不经修改地工作。在
我的pep8是一个包含__init__.py
的目录,其中包含以下内容:
from pep8 import *
MAX_LINE_LENGTH = 119
对于python2.5+,默认情况下可以指定使用绝对导入。使用
from __future__ import absolute_import
。在对于monkey修补Python模块,您需要执行从项目到重写模块的相对导入。在
对于这个例子,我假设您正在分发一个库。它需要对其他项目进行一些微调,因为
__main__
python文件不能有相对导入。在myproject/__init__.py
:
^{pr2}$myproject/pep8/__init__.py
:我知道这是一个老问题,但它仍然出现在谷歌搜索。对于实际需要的情况(例如:受保护的库包装),我建议使用WRAPT包。在
实际上,我将此应用于我有一个模型,该模型是核心集的一部分,但可以由其他应用程序扩展(如flask应用程序之类的前端)。核心模型是受保护的,但可以由其他开发人员扩展。在
https://pypi.python.org/pypi/wrapt
相关问题 更多 >
编程相关推荐