相关疑难解决方法(0)

包"在"模块内

我有越来越多的脚本组成我正在编写的程序,并决定是时候清理我的源代码树并正确打包它们了.我确定这是一个简单的问题,但我无法找到如何做到这一点.

如果我有一组适合的模块,但其中一个应该是顶级模块,其他模块应该以模块名称为前缀,但实际上是进入较低级别的软件包,我该怎么做.

例如,我想能够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.pymystuff/__init__.py.如果有人对我为什么不这样做有任何意见,我想听听他们的意见.

实际上最后,我正在连接另一种方式,因为在创建时我无法找到一种方法来制作distutils dereference symlinks tar.gz,并且我的输出中的链接断了.这种方式具有相同的效果并保持快乐.

python packaging module package python-3.x

5
推荐指数
1
解决办法
173
查看次数

标签 统计

module ×1

package ×1

packaging ×1

python ×1

python-3.x ×1