如何避免python包中的重复命名?

如何避免python包中的重复命名?,python,module,package,Python,Module,Package,假设我正在构建一个为香蕉建模的python项目,我将如何构建它?我通常从 mkdir bananas 然后我在banana.py中编写代码,这是一个文件,直到我开始添加自述文件、许可证、贡献者等等,python文件在元文件中丢失。然后我又做了同样的事 mkdir bananas mv *.py* bananas 以便将实际代码与元代码分离。现在我有了一个双重的,重复的dir结构 $ ls /path/to/bananas README LICENSE CONTRIBUTORS bananas

假设我正在构建一个为香蕉建模的python项目,我将如何构建它?我通常从

mkdir bananas
然后我在banana.py中编写代码,这是一个文件,直到我开始添加自述文件、许可证、贡献者等等,python文件在元文件中丢失。然后我又做了同样的事

mkdir bananas
mv *.py* bananas
以便将实际代码与元代码分离。现在我有了一个双重的,重复的dir结构

$ ls /path/to/bananas
README
LICENSE
CONTRIBUTORS
bananas/banana.py
所以这一切都结束了

bananas/bananas/banana.py
我觉得这不对。我接触最多的代码隐藏得太远了。我也讨厌像这样的进口商品

from bananas.bananas import Banana
我只是想

from bananas import Banana
有什么想法吗?我错过了什么?我引述:

重复的路径对您的工具和您的应用程序都会造成混淆 开发者。不必要的筑巢对任何人都没有帮助(除非他们 怀旧单一SVN回购协议)


有时这是不可避免的。只需看看标准库的datetime模块

datetime.datetime datetime.datetime.today().date()
你可以做相对导入。一个香蕉文件只需要

from bananas import Banana  # or
from .bananas import Banana
无论如何,建议通过移动模块使其可重用(m)

有些人导入模块,而不是类

from bananas import bananas as bananaModule
bananaModule.banana()
您还可以为项目指定一个别致的代码名,使其成为:

from fancyish.bananas import bananas as bananaModule

就我个人而言,我认为这样构建它没有任何问题,这是我在自己的项目中所做的。根据我尝试过的一些在线指南,这似乎是推荐的方法

例如,作者定义了一个示例项目的结构:

$pwd
~/code/sandman
$tree
.
|-许可证
|-自述文件
|-托多医学博士
|-文件
||--conf.py
||——生成
||--index.rst
||--installation.rst
||--modules.rst
||--quickstart.rst
||--sandman.rst
|-requirements.txt
|-沙曼
||--uuu init_uuuuuuuuuuuuuuuuuy.py
||--exception.py
||--model.py
||--sandman.py
||——测试
||--models.py
||--test_sandman.py
|-setup.py

因此,在这种情况下,您将得到一个类似于
sandman/sandman/sandman.py

谢谢,您知道一个使用init存储香蕉的黑客吗?