在使用 Python 编写 Package 的时候,如果在文件夹下放置
__init__.py 文件,就表明这个是一个 package 。
个人理解,在这种情况下,整个模块是一个整体,一般测试运行和使用都是通过 `import sound` 或者 `from sound import *` 这种方式。测试的时候要切换到 sound 路径下或者将 sound 所在路径添加仅 path 。最终这个 sound package 多半会添加
setup.py 可以直接通过 `pip install sound` 这种方式来直接安装,也可以上传到 pypi 。平时使用 python `pip install [package]` 的 package 就是这么来的。另外也可以通过
setup.py 添加全局命令供命令行使用,十分方便!
对于每一个 package 里面的 import ,通过相对路径的导入会比绝对路径具有大一点的灵活性。对于这部分,你可以去看 《 Python Cookbook 3 》那本书,里面有更加详细的描述。我记得有 stackoverflow 里面有一个页面讨论了相对路径导入和绝对路径导入的问题的。
总体来说,将代码写成 package 这种形式(带
__init__.py) 的,package 的使用是以整体来看的,单独每个 py 的代码都可能无法直接运行。所以有些 package 里面都有一个 tests 的文件夹,里面的测试代码一般都带有 `sys.path.append` 类似的代码段。