如何构造python包而不重复imp的顶级名称

2024-05-18 07:13:26 发布

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

我是python包管理的新手,肯定做错了什么。鼓励我创建如下目录结构:

bagoftricks
├── bagoftricks
│   ├── bagoftricks
│   │   ├── __init__.py
│   │   └── bagoftricks.py
│   └── __init__.py
├── README.md
└── setup.py

py包含两个函数,levenshtein()geofind()

我想称之为:

import bagoftricks

x = bagoftricks.levenshtein(arg1,arg2) 

相反,我发现我必须这样做:

import bagoftricks

x = bagoftricks.bagoftricks.levenshtein(arg1,arg2) 

有没有更好的方法来组织我的包,而不是命名冗余?

更新

所以,我按照下面Avichal Badaya的指示,移除了一层嵌套。也就是说,我现在有。。。

bagoftricks
├── bagoftricks
│   ├── __init__.py
│   └── bagoftricks.py
├── README.md
└── setup.py

不过,要打电话给这个包裹,我还有。。。

from bagoftricks.bagoftricks import geofind()

或者

import bagoftricks

那么

>>> bagoftricks.bagoftricks.geofind()

而不是想要的。。。。

from bagoftricks import geofind()

或者

import bagoftricks

>>> bagoftricks.geofind()

我不能去掉那层多余的巢。通过类比,当我试图移除一个层次的嵌套时,我的模块是平的,如下所示:

bagoftricks
├── __init__.py
├── bagoftricks.py
├── README.md
└── setup.py

我根本无法构建包。。。

$ python setup.py build
running build
running build_py
error: package directory 'bagoftricks' does not exist

在没有多余的顶级名称导入的情况下,使用标准包之类的自然导入有什么秘诀?


Tags: frompyimportbuildinitsetupmdrunning