首页 > 解决方案 > python3:选择包属性中的功能和模块

问题描述

我正在编写一个我打算在pypi中发布的 python 包。我的目标是,当用户导入包时,该用户只有一个功能可用(即,没有包含模块和其他子包)

为了更清楚,这是我的项目的简化示例

项目结构如下:

main_folder
 ├── setup.py
 ├── tests
 └── pkg
     ├── __init__
     ├── wrapper.py
     └── sub_pkg
          ├── __init__
          ├── mod_1.py
          └── mod_2.py

哪里wrapper.py有这样的功能myfun

from .sub_pkg.mod_1 import specialised_function_1 
from .sub_pkg.mod_2 import specialised_function_2 

def myfun(args):
   if something1:
      result = specialised_function_1(args)
   if something2:
      result = specialised_function_2(args)
   return result

我想要的是当用户导入时pkg,只能myfun通过pkg.myfun

我试过的

所以我想我的问题是,有没有办法做这样的事情?在类似情况下的最佳做法是什么?如果不在__init__.pyand中setup.py,那么可能有不同的结构?

标签: pythonpython-3.xpackagesetuptoolspypi

解决方案


推荐阅读