我有几个已编译的python模块;它们被放入单个.so
(为了避免运行时链接,存在跨模块符号依赖关系),但是许多符号链接指向此.so
:
foo.so -> liball.so
bar.so -> liball.so
liball.so
这样,我可以import foo
(Python会调用initfoo()
中定义的liball.so
)或import bar
(调用initbar()
)。
我想知道这种方法是否适用于Windows?
答案 0 :(得分: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
相同的符号,但含义不同,则此方法无效。但是你可以复制文件。这将占用比所需更多的磁盘空间,但这并没有太大的伤害,恕我直言。