跳转至

腾讯云 SDK 模块问题

某些情况下,运行腾讯云的相关采集器可能会报No module named 'tencentcloud.xxx'错误。

本文主要介绍此问题的原因与解决方案

1. 背景

脚本市场中腾讯云采集器底层使用了腾讯云的官方 SDKtencentcloud-sdk-python

腾讯云官方 SDK 区分「总包」和「散包」,总包为包含所有产品的 SDK、散包为每个产品单独的 SDK,且两者不能同时使用。

腾讯云 SDK 的 官方文档 也证实了这一点:

2. 现状

由于「观测云集成 Core 核心包」仅需要使用tencentcloud-sdk-python-common,因此在 2022-06-20 之前版本的核心包依赖的是「散包」,如用户额外安装了「总包」,会导致腾讯云的采集器无法运行。

为了保持最大兼容性,在 2022-06-20 之后的核心包已改为依赖「总包」,需要针对腾讯云 SDK 进行额外开发的可以不必再额外安装 SDK。

如同时安装了总包和散包,那么运行如下脚本会产生无法导入的问题:

此处假设同时安装了 tencentcloud-sdk-python 和 tencentcloud-sdk-python-cvm

Python
1
2
3
4
from tencentcloud.cvm.v20170312 import cvm_client, models

def test():
    pass

3. 确认问题

可以通过以下方法检查是否同时安装了腾讯云 SDK 的总包和散包:

第 1 步:进入第三方包安装目录

打开 DataFlux Func 的「管理 / 实验性功能 / 文件管理器」,进入extra-python-packages/目录:

第 2 步:检查腾讯云 SDK 包

查找tencentcloud开头的目录,如果同时存在tencentcloud_sdk_python-{版本号}.dist-infotencentcloud_sdk_python_{common 或具体产品名}-{版本号}.dist-info等目录,则说明同时安装了总包和散包:

4. 解决方法

如果已经产生了上述问题,那么,可以通过删除已经安装的包文件来修复此问题。

第 1 步:进入第三方包安装目录

在 DataFlux Func 的「管理 / 实验性功能 / 文件管理器」,进入extra-python-packages/目录,删除所有tencentcloud开头的文件夹:

第 2 步:重启 DataFlux Func

重启整个 DataFlux Func。

第 3 步:重新安装腾讯云 SDK

重新使用「PIP 工具」安装总包tencentcloud-sdk-python,并且以后也不要再安装任何散包

5. 备注

无论是安装以前版本的「观测云集成 Core 核心包」时自动提示安装腾讯云的包,还是自行在「PIP 工具」中安装腾讯云的包,只要系统内同时安装了「总包」和「散包」都有可能产生上述问题。

此问题本质是腾讯云的包相互之间不兼容导致,和 DataFlux Func、Python 脚本本身都没有直接关系。

请通过上文「确认问题」步骤判断是否存在问题,并按照「解决方法」步骤来解决问题。