我越来越多的脚本组成了我正在编写的程序,并决定该是清理我的源代码树并将其正确打包的时候了。我敢肯定这是一个简单的问题,但我找不到解决方法。

如果我有一组模块,这些模块可以组合在一起,但是一个模块应该是顶层模块,而其他模块应该以模块名称为前缀,但实际上要放入较低级别的软件包中,我该怎么做。

例如,说我希望能够import mystuff并获得所有信息。但我也应该能够import mystuff.test.test1。我以为我会像这样创建一个源代码树,

myprogram/
    mystuff.py
    mystuff/
        __init__.py
        tests/
            __init__.py
            test1.py
            test2.py
            ...

但是在这种情况下,似乎mystuff/始终优先于mystuff.py,因此import mystuff不会执行任何操作(只要mystuff/__init__.py为空)。

获得所需行为的正确方法是什么?或者这是不可能的,我必须将mystuff.py移到mystuff/并必须以mystuff.mystuff的方式访问它(似乎是不必要的重复)。

抱歉,如果我错过了明显的事情。我认为这必须记录在某个地方,但是我似乎找不到在哪里。

更新。 虽然我相信Ignacio的方法是正确的方法,但我不太喜欢它!如果我在编辑器中打开了多个文件,并且它们都被称为__init__.py,则事情可能会变得困惑。因此,我决定保留其结构不变,并将mystuff.py链接到mystuff/__init__.py。如果有人对我为什么不应该这样做有任何意见,我想听听他们的意见。

实际上,最后,我以另一种方式进行链接,因为在创建tar.gz时找不到找不到distutils取消引用符号链接(symbolic link)的方法,并且最终在输出中出现了断开的链接。这种方式具有相同的效果并使它保持快乐。

最佳答案

而是将mystuff.py中的所有内容放入mystuff/__init__.py中。

10-04 19:53