首页 > 解决方案 > 如何实现只有一层访问权限的 python 模块

问题描述

我想实现一个可以在没有多个命名空间层的情况下导入的 python 模块。例如,我想创建一个可以按如下方式使用的模块:

import sound

sound.echofilter(args...)
sound.reversefilter(args...)

在我看到的示例和文档中,我看不到如何做到这一点。文档中的示例具有以下内容:

sound/                          Top-level package
      __init__.py               Initialize the sound package
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py

这需要

import sound.effects.echo
sound.effects.echo.echofilter(args...)

虽然我可以跳过外部和内部包(声音和效果)并且只有一层目录,但我仍然在函数之前有额外的文件层,例如:

sound.echo.echofilter(args...)
sound.echo.reversefilter(args...)

或者,我可以只有一个文件,sound.py其中都实现了,echofilter并且reversefilter没有任何目录。但是,为了组织我的代码,最好将它们放在单独的文件和目录中。

这可能与一层命名空间吗?

标签: pythonmoduledirectory

解决方案


推荐阅读