我有几个编译好的 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
,但含义不同,则此方法无效。但是你可以只复制文件。这将占用比需要更多的磁盘空间,但这并没有太大的伤害,恕我直言。