我有几个编译好的 python 模块;它们被放入一个单一的.so(为了避免运行时链接,存在跨模块符号依赖关系),但许多符号链接指向这一点.so:
foo.so -> liball.so
bar.so -> liball.so
liball.so
这样,我可以做到import foo(Python 将调用initfoo()定义在liball.so)或import bar(调用initbar())。
我想知道这种方法是否适用于 Windows?
我有几个编译好的 python 模块;它们被放入一个单一的.so(为了避免运行时链接,存在跨模块符号依赖关系),但许多符号链接指向这一点.so:
foo.so -> liball.so
bar.so -> liball.so
liball.so
这样,我可以做到import foo(Python 将调用initfoo()定义在liball.so)或import bar(调用initbar())。
我想知道这种方法是否适用于 Windows?
可能不是,但你可以实现你的目标
import sys
import liball
sys.modules['foo'] = liball
sys.modules['bar'] = liball
如果您需要在多个地方导入它们,或者使用
import liball as foo, libalb as bar, liball
如果你只需要在一个地方。
但是,可能无法区分initfoo()和之间的区别,并且initbar()两者都必须做到,以便模块有效地包含要包含在两个模块中的所有内容。
如果foo部分包含与 相同的符号bar,但含义不同,则此方法无效。但是你可以只复制文件。这将占用比需要更多的磁盘空间,但这并没有太大的伤害,恕我直言。