包装python modu的优雅/恰当方式

2024-06-16 10:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我对包装pep8很感兴趣,这样我可以在使用前修补它。包装模块的“正确”方式是什么?在

如果我的模块名为pep8,并且在我的路径中位于实际pep8之前的某个地方,那么我模块中的任何“import pep8”都将只导入自己。我事先不知道真正的pep8将在哪里生存,因为这需要在多个系统中进行推广。我无法删除我的pep8包装器所在的路径搜索路径,因为这也会因执行它的系统而异。在

我不想重新命名pep8,因为我希望pep8命令可以不经修改地工作。在

我的pep8是一个包含__init__.py的目录,其中包含以下内容:

from pep8 import *
MAX_LINE_LENGTH = 119 

Tags: 模块frompyimport命令路径目录init
2条回答

对于python2.5+,默认情况下可以指定使用绝对导入。使用from __future__ import absolute_import。在

对于monkey修补Python模块,您需要执行从项目到重写模块的相对导入。在

对于这个例子,我假设您正在分发一个库。它需要对其他项目进行一些微调,因为__main__python文件不能有相对导入。在

myproject/__init__.py

from . import pep8 # optional "as pep8"
# The rest of your code, using this pep8 module.

myproject/pep8/__init__.py

^{pr2}$

我知道这是一个老问题,但它仍然出现在谷歌搜索。对于实际需要的情况(例如:受保护的库包装),我建议使用WRAPT包。在

实际上,我将此应用于我有一个模型,该模型是核心集的一部分,但可以由其他应用程序扩展(如flask应用程序之类的前端)。核心模型是受保护的,但可以由其他开发人员扩展。在

https://pypi.python.org/pypi/wrapt

相关问题 更多 >