我越来越多的脚本组成了我正在编写的程序,并决定该是清理我的源代码树并将其正确打包的时候了。我敢肯定这是一个简单的问题,但我找不到解决方法。
如果我有一组模块,这些模块可以组合在一起,但是一个模块应该是顶层模块,而其他模块应该以模块名称为前缀,但实际上要放入较低级别的软件包中,我该怎么做。
例如,说我希望能够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
中。