我想为一个大型项目建立一个很好的模块层次结构。(Python 似乎妨碍了这一点)我对模块和包的区别以及它们与命名空间的 C++ 概念的关系感到困惑。具体来说,我的项目是一个编译器,代码生成阶段想要从一组抽象表示中查询属性,这些抽象表示在不同的目录中(实际上在层次结构中很远)
问题可以表述为:
Ass:让 a.py 和 b.py 成为项目层次结构中某处的两个源文件
然后:我想从 a.py 引用 b.py 中定义的函数——理想情况下,使用项目定义良好的根目录(即 /src)的相对路径。我们想要一个通用的解决方案,这将永远有效..
Dirty hack:这听起来很荒谬,但我将这个项目中包含 .py 的所有子目录放入 PYTHONPATH 中,我们将能够用它们的名称引用它们,但是这样代码的读者就会失去任何层次感和关系感不同的项目类等。
注意:Python.org 上的教程只提到了从文件 c.py 引用放置在其父目录中的文件 d.py 的特殊情况。使 Python 扩展到真正的大型项目的普遍性在哪里?