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