首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何处理几个同名的.pyd依赖关系?

Python:如何处理几个同名的.pyd依赖关系?
EN

Stack Overflow用户
提问于 2011-11-28 16:28:20
回答 2查看 1.6K关注 0票数 3

我的python工作区中有两个需要sip.pyd的模块

模块1.pyd需要sip.pyd (它实现8.0-8.1)

模块2.v6.0需要sip.pyd (另一个实现V6.0的文件)

所以我不能只选择新的,它不起作用:我必须把它们都保留下来!

代码语言:javascript
复制
(RuntimeError: the sip module implements API v6.0 but the fbx module requires API v8.1)

如何在.pyd扩展(不可编辑的python )中导入模块,并指定要源的sip.pyd?

至于解决办法,我设法做到了:

  1. One sip.pyd位于我的根站点-包位置。如果需要导入需要其他sip.pyd的模块,则从sys.path中移除根路径,并添加其他sip.pyd所在的精确文件夹路径。
  2. 可以导入我的模块并恢复以前的sys.path.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-28 16:50:15

假设您没有一段同时需要两个文件的代码。我建议如下:

将两个文件安装在两个单独的目录(例如,site-packages/

  • write和sip-8.0)中,您将在sip-6.0中放置一个sip_helper.py文件,代码看起来类似于

sip_helper.py内容:

代码语言:javascript
复制
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)

  • call

  • 将sip_helper.py放在site_packages ( sip-6.0和sip-8.0

  • sip_helper.install_sip的父目录)中。
票数 1
EN

Stack Overflow用户

发布于 2011-11-28 16:56:28

我不知道这是否有效(如果模块的名称必须与其内容匹配),但您不能将它们重命名为sip6.pyd resp吗?sip8.pyd然后做

代码语言:javascript
复制
if need6:
    import sip6 as sip
else:
    import sip8 as sip
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8298978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档