我的python工作区中有两个需要sip.pyd的模块
模块1.pyd需要sip.pyd (它实现8.0-8.1)
模块2.v6.0需要sip.pyd (另一个实现V6.0的文件)
所以我不能只选择新的,它不起作用:我必须把它们都保留下来!
(RuntimeError: the sip module implements API v6.0 but the fbx module requires API v8.1)如何在.pyd扩展(不可编辑的python )中导入模块,并指定要源的sip.pyd?
至于解决办法,我设法做到了:
发布于 2011-11-28 16:50:15
假设您没有一段同时需要两个文件的代码。我建议如下:
将两个文件安装在两个单独的目录(例如,site-packages/
sip-8.0)中,您将在sip-6.0中放置一个sip_helper.py文件,代码看起来类似于sip_helper.py内容:
import sys
import re
from os.path import join, dirname
def install_sip(version='6.0'):
assert version in ('6.0', '8.0'), "unsupported version"
keep = []
if 'sip' in sys.modules:
del sys.modules['sip']
for path in sys.path:
if not re.match('.*sip\d\.\d', path):
keep.append(path)
sys.path[:] = keep # remove other paths
sys.path.append(join(dirname(__file__), 'sip-%s' % version))在启动程序时,directories)
sip_helper.install_sip的父目录)中。发布于 2011-11-28 16:56:28
我不知道这是否有效(如果模块的名称必须与其内容匹配),但您不能将它们重命名为sip6.pyd resp吗?sip8.pyd然后做
if need6:
import sip6 as sip
else:
import sip8 as siphttps://stackoverflow.com/questions/8298978
复制相似问题