我想要实现的目标如下:
我有一个 python 包,我们称之为它foo
,它包含一个目录,其中foo
包含一个__init__.py
和,在正常使用下,一个已编译的扩展库(一个.so
或一个.pyd
文件),它__init__.py
导入到顶级命名空间。
现在,问题是我希望顶级命名空间包含一个版本字符串,该字符串setup.py
在构建和打包期间可用,而扩展库不一定可用(尚未构建),因此ImportError
在尝试导入时会导致foo.version
.
现在,很明显,我可以有一个异常处理程序,__init__.py
它只是忽略导入任何内容的失败,但这并不理想,因为用户关心包无法导入的原因可能是真正的原因。
有什么方法可以将版本字符串放在包中的一个位置,使其可导入,但不会破坏尝试导入扩展的异常?