检查PYTHONPATH上是否有所有需要的模块

2024-06-26 14:50:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用Python编写了一个大型系统,现在我想分发给一些同事。有几个文件夹需要添加到PYTHONPATH才能找到我的所有模块(文件)。我正在寻找一种方法,让他们理智的错误消息,如果他们没有正确设置他们的PYTHONPATH。假设结构是:

ParentModule
  calls Child
     calls GrandChild
        calls MyModule

如果他们运行ParentModule,它可能会运行很长一段时间,然后才会出现在孙子中并需要MyModule,如果MyModule的目录不在PYTHONPATH上,它会崩溃,并抱怨找不到MyModule。我希望能做一些像:

for file in (all files that could ever be reached from here):
  if all modules needed by 'file' are not available
    print "error: Please make sure your PYTHONPATH points to x,y, and z"

这样的事情可能吗


Tags: 模块文件方法文件夹消息系统错误all
2条回答

在主模块的顶部,我将尝试导入程序所依赖的所有模块,并将其包装为try/除非在任何import语句失败时打印sane错误:

import sys
try:
    import Child
    import GrandChild
    import MyModule
except ImportError:
    print "Error: Please make sure your PYTHONPATH points to x, y, and z"
    sys.exit(1)

# current module contents

根据您“调用”ChildGrandChildMyModule的方式,这应该会自动发生

如果您所说的“call”是指import,并且按照常规的方式在模块类型上进行导入,那么所有导入链接都将在父模块的导入时自动发生。因此,如果下游导入不可用,那么在导入ParentModule时将得到一个ImportError。如果你在“调用”脚本,比如说,在子进程中执行它们,那么不,我不认为有一个简单的方法来确保模块的可用性,因为你所做的是完全动态的。同样,如果你在做完全动态的导入。一般来说,这是动态编程的不利因素之一——通常没有严格的方法来确保事情按您的预期进行

编辑:

你当然可以做一些启发性的事情,比如@F.J.的建议

相关问题 更多 >