Python 希望在我的层次结构的子目录中运行主程序
我正在从事一个开放源码的Python项目,其中演示程序的数量相当大(并且稳步增加) 我将演示程序移到了名为Python 希望在我的层次结构的子目录中运行主程序,python,Python,我正在从事一个开放源码的Python项目,其中演示程序的数量相当大(并且稳步增加) 我将演示程序移到了名为demo/的子目录中,但是您当然不能直接运行它们-如果这样做,Python会将demo/子目录作为根目录,并且所有项目导入都会失败 我的解决方案是在顶层编写Demo.py程序,让您选择要运行的演示,但该项目的其他开发人员和用户(相当合理地)抱怨必须这样做——他们只想直接运行演示 我没有一个好的解决办法。我最好的办法是在每个演示文件的顶部放一个这样的代码块: if __name__ == '_
demo/
的子目录中,但是您当然不能直接运行它们-如果这样做,Python会将demo/
子目录作为根目录,并且所有项目导入都会失败
我的解决方案是在顶层编写Demo.py程序,让您选择要运行的演示,但该项目的其他开发人员和用户(相当合理地)抱怨必须这样做——他们只想直接运行演示
我没有一个好的解决办法。我最好的办法是在每个演示文件的顶部放一个这样的代码块:
if __name__ == '__main__':
import sys
from os.path import dirname
sys.path.append(dirname(dirname(__file__)))
这似乎很管用,虽然不雅观
汤姆,我会把这些信息放在这里,以防对其他人有用:可能会让你找到一些有建设性的东西,但是。。我发现不可能为demos目录中的文件生成文档。或者
pydoc demos/Blur.py
或
只需运行文件。i、 他们做你想做的事。然而,我不能得到任何文件。它适用于所有其他目录
Paddy为什么需要调用dirname()两次?
dirname(\uuuu file\uuuu)
,包含您正在执行的文件的目录,总是已经在sys.path
中,因此添加它将永远不会有用。在上面描述的示例中,Python脚本驻留在Python主目录的子目录中,因此我需要添加dirname(dirname(\uu文件\uu))
。(请注意,我确实测试了我的解决方案…)
python -m pydoc -w demos/Blur.py