我正在开发一个开源 Python 项目,其中包含大量(并且稳步增加)的演示程序。
我将演示程序移到了一个名为 的子目录demo/
中,但是您当然不能直接运行它们 - 如果这样做,Python 会将demo/
子目录作为您的根目录,并且您的所有项目导入都会失败。
我的解决方法是在顶层编写一个 Demo.py 程序,让您选择要运行的演示,但是该项目的其他开发人员和用户(相当合理地)抱怨必须这样做 - 他们只是想运行他们的演示直接。
我对此没有很好的解决方案。我最好的想法是将这样的代码块放在每个演示文件的顶部:
if __name__ == '__main__':
import sys
from os.path import dirname
sys.path.append(dirname(dirname(__file__)))
这似乎确实有效,尽管它不优雅。
- 有更好的解决方案吗?
- 如果没有,我应该注意这个解决方案中是否有任何明显的陷阱?