我有越来越多的脚本组成我正在编写的程序,并决定是时候清理我的源代码树并正确打包它们了.我确定这是一个简单的问题,但我无法找到如何做到这一点.
如果我有一组适合的模块,但其中一个应该是顶级模块,其他模块应该以模块名称为前缀,但实际上是进入较低级别的软件包,我该怎么做.
例如,我想能够import mystuff,并获得所有mystuff.但我也应该能够import mystuff.test.test1.我以为我会创建这样的源代码树,
myprogram/
mystuff.py
mystuff/
__init__.py
tests/
__init__.py
test1.py
test2.py
...
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它似乎mystuff/总是优先mystuff.py,所以import mystuff什么也不做(只要mystuff/的__init__.py是空的).
获得理想行为的正确方法是什么?或者这是不可能的,我必须mystuff.py进入mystuff/并且必须访问它mystuff.mystuff(看起来像是不必要的重复).
对不起,如果我错过了一些明显的东西.我认为这必须在某处记录,但我似乎无法找到某处.
更新.虽然我相信Ignacio的方法是正确的,但我真的不喜欢它!如果我在我的编辑器中打开了多个文件并且它们都被称为__init__.py事情可能会变得混乱.所以,我决定保留我的结构,并链接mystuff.py到mystuff/__init__.py.如果有人对我为什么不这样做有任何意见,我想听听他们的意见.
实际上最后,我正在连接另一种方式,因为在创建时我无法找到一种方法来制作distutils dereference symlinks tar.gz,并且我的输出中的链接断了.这种方式具有相同的效果并保持快乐.