我是 python 包管理的新手,肯定做错了什么。我被鼓励创建一个目录结构如下:
bagoftricks
├── bagoftricks
│ ├── bagoftricks
│ │ ├── __init__.py
│ │ └── bagoftricks.py
│ └── __init__.py
├── README.md
└── setup.py
bagoftricks.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
没有多余的顶级名称导入,像标准包使用的自然导入的秘诀是什么?