python中运行阿里百炼的通义千问openai样例时报错:from openai import OpenAIModuleNotFoundError: No module named ‘openai

在python已经安装好openai的SDK情况下,执行以下python语句。

import os
from openai import OpenAI

try:
    client = OpenAI(
        # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen-plus",  # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': '你是谁?'}
            ]
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"错误信息:{e}")
    print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")

生成hello_qwen.py文件后,执行该文件报错如下:

思考一:OpenAI的SDK已经安装否?(以超级管理员权限在windows powershell中执行以下两段代码排查,发现已经安装)

PS C:\Windows\system32> pip show openai
PS C:\Windows\system32> python

如图:

思考二:执行py程序的python的版本是否一致?(待查)

从思考一中的上图可知,系统默认python版本是3.8.6,但在执行hello_qwen.py时,打开的python shell是3.7.4?会否因为python shell版本太旧或者安装了多个python在一个window中了,没法找到openai所在?

根据此种情况,最好办法就是先在dos指定窗体中看看,经查发现果然是存在两个python。

因为可以确定当时安装openai sdk是在python 3.8.6版本的目录,想办法在3.8.6中执行hello_qwen.py看看。或此时也可以先在python sheel 3.7.4的窗体中的module browser看看其module path到底是否指向了正确的位置。

选取窗体菜单项【File】下【Module Browser】,会看到如下路径,发现整个3.7.4版本的python shell,其sys.path中的moduler都没有绑定openai默认的路径。

因此,解决方案就只有三种可能

方案一:要么就是换在Python3.8.6中执行这个openai的程序,如下可在dos窗体中,利用3.8.6的pyhon执行语句:

方案二:要么就是需要在Python 3.7.4中重装安装这个openai的SDK?此时,重新到阿里的通义千问openai大模型部署环境网页中查看如何重装openai的SDK,不查不知,一查竟发现我安装时犯了个低级错误,原来是这个openai必须要运行在python3.8版本以上才可以。如果不是这版本,本身就需要对系统默认的python升级。

因为运行环境中的工作电脑是域用户,所以我可以确定当时安装的python 3.7低版本是以用户身份安装的个人软件版本,所以对其进行升级才可。

根据指引重装下载并安装新的python。

(因下载时间关系,方案二往下走如何,就不啰嗦,重装新的python和openai sdk一定可解决问题的)

方案三:要么借道在Python3.7.4中的sys.path中绑定openai sdk所安装在python 3.8.4上的默认位置?那可否将3.7.4的python\lib\site-packages要与之前查找openai所安装的对应site-packages目录要保持一致,而借用3.8.6版本的目录和文件?

那如何修改sys.path中的内容呢?是否在系统环境变量中进行设定?或在pythong引用sys的时候设定?先查系统环境变量先。

发现根本当时就没设定pythonpath,直接在DOS指令窗体中设定试试。

set PYTHONPATH=c:\Program Files\python\lib\site-packages\;%PYTHONPATH%

 这里注意PYTHONPATH所指的目录,应该是之前在window powershell查看第一次安装openai sdk时所在的目录c:\program files\python\lib\site-packages,

即在dos设定这个目录的环境变量。 

此时,直接在dos中,运行3.7.4的py来执行该程序,发觉因python 3.7.4的包库,尽管调入openai的sdk,但因python内核本就是3.8.6的,与shell的3.7.4版本不一致,依旧报错,因此是不能这样借用之前安装在3.8.6上的openai sdk的目录的。即方案三是行不通的。

综上所述,方案三是行不通的,需要严格按照阿里通义千问openai的指引,只能重装python为最新的3.8以上版本,并且最好保持本机唯一优先使用该版本作为python shell,如一台机安装多个版本的python,最好当前python ide中也是这版本的ide shell,方可解决该问题。

作者:gzgenius

物联沃分享整理
物联沃-IOTWORD物联网 » python中运行阿里百炼的通义千问openai样例时报错:from openai import OpenAIModuleNotFoundError: No module named ‘openai

发表回复