从已知导入失败的包导入

时间:2013-09-19 19:39:56

标签: python distutils

我想要实现的目标如下:

我有一个python包,我们称之为foo,包含一个包含foo的目录__init__.py,并且在正常情况下使用已编译的扩展库(.so.pyd文件),__init__.py导入顶级命名空间。

现在,问题在于我希望顶级命名空间包含一个版本字符串,在构建和打包期间setup.py可用,当扩展库不一定可用时(尚未构建),等等在尝试导入ImportError时会导致foo.version

现在,显然,我可以在__init__.py中有一个异常处理程序,它只是忽略导入任何内容的失败,但这并不理想,因为可能有一个真正的原因,用户关心包不能进口。

我是否可以通过某种方式将版本字符串放在包中的单个位置,使其具有可导入性,但不会因尝试导入扩展名而中断异常?

1 个答案:

答案 0 :(得分:2)

与导入打印出跟踪消息或警告时忽略失败相反,以便用户仍然会收到负面反馈。

如果使用python 3.3导入特定的子文件,可以使用imp.load_source,它接受你要导入的文件的路径名。