1

我有几个编译好的 python 模块;它们被放入一个单一的.so(为了避免运行时链接,存在跨模块符号依赖关系),但许多符号链接指向这一点.so

foo.so -> liball.so
bar.so -> liball.so
liball.so

这样,我可以做到import foo(Python 将调用initfoo()定义在liball.so)或import bar(调用initbar())。

我想知道这种方法是否适用于 Windows?

4

1 回答 1

0

可能不是,但你可以实现你的目标

import sys
import liball
sys.modules['foo'] = liball
sys.modules['bar'] = liball

如果您需要在多个地方导入它们,或者使用

import liball as foo, libalb as bar, liball

如果你只需要在一个地方。

但是,可能无法区分initfoo()和之间的区别,并且initbar()两者都必须做到,以便模块有效地包含要包含在两个模块中的所有内容。

如果foo部分包含与 相同的符号bar,但含义不同,则此方法无效。但是你可以只复制文件。这将占用比需要更多的磁盘空间,但这并没有太大的伤害,恕我直言。

于 2012-10-05T09:55:22.987 回答