gpt4 book ai didi

Python:如何处理多个同名的 .pyd 依赖项?

转载 作者:行者123 更新时间:2023-11-28 17:52:02 25 4
gpt4 key购买 nike

我的 python 工作区中有两个需要 sip.pyd 的模块
Module1.pyd 需要 sip.pyd(实现 v 8.0-8.1)
Module2.pyd 需要 sip.pyd(另一个实现 v6.0 的文件)

所以我不能只选择较新的那个,这是行不通的:我必须同时保留它们!

(RuntimeError: the sip module implements API v6.0 but the fbx module requires API v8.1)

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

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

  1. 一个 sip.pyd 在我的根站点包位置。
  2. 如果我必须导入需要其他 sip.pyd 的模块,我会从 sys.path 中删除根路径,并在其他 sip.pyd 所在的位置附加精确的文件夹路径。
  3. 我可以导入我的模块并恢复以前的 sys.path。

最佳答案

假设您没有一段代码同时需要这两个文件。我推荐以下内容:

  • 将这两个文件安装在 2 个单独的目录中(例如称它们为 sip-6.0sip-8.0),您将放置在 site -packages/

  • 编写一个 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))
  • 将sip_helper.py放到site_packages(sip-6.0和sip-8.0目录的父目录)
  • 在程序启动时调用 sip_helper.install_sip

关于Python:如何处理多个同名的 .pyd 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com