Python 在Raspberry Pi Zero上构建SeeingWand时存在编码问题

Python 在Raspberry Pi Zero上构建SeeingWand时存在编码问题,python,Python,这是我第一次发帖,请原谅我的失礼 我正在制作一个SeeingWand,如MagPi第71期所述。 我已经安装并测试了所有硬件。然后安装python代码,原版;代码是python2.7,我已将代码更新为在python3下运行,但在运行代码时出现了一个奇怪的错误: 系统显示http模块没有.client属性 文件上说确实如此。我试过了。client和。server属性都给出了相同的错误。我做错了什么 我尝试过几种不同的编码方式,raspberry OS(Raspbian)的几种版本都会出现相同的错误

这是我第一次发帖,请原谅我的失礼

我正在制作一个SeeingWand,如MagPi第71期所述。 我已经安装并测试了所有硬件。然后安装python代码,原版;代码是python2.7,我已将代码更新为在python3下运行,但在运行代码时出现了一个奇怪的错误:

系统显示http模块没有.client属性

文件上说确实如此。我试过了。client和。server属性都给出了相同的错误。我做错了什么

我尝试过几种不同的编码方式,raspberry OS(Raspbian)的几种版本都会出现相同的错误

import picamera, http, urllib, base64, json, re
from os import system
from gpiozero import Button
使用您的MICROSOFT VISION API密钥更改下面的{MS_API_KEY} 摄像头按钮-这是BCM编号,而不是pin编号 设置摄像机 安装视觉API 循环永远等待按钮按下 如果为True:

camera_button.wait_for_press()
camera.capture('/tmp/image.jpg')

系统显示一个错误,指出http模块没有.client属性

文件上说确实如此。我试过了。client和。server属性都给出了相同的错误。我做错了什么

预期结果如下: 当我按下按钮1时,我希望相机能拍照 当我按下按钮2时,我希望访问MSFT Azure以使用AI识别图片
最后的输出是让魔杖访问音频帽子,并描述魔杖正在“看”什么。

尝试添加如下导入:

import http.client

编辑:
http
是一个Python包。即使软件包包含一些模块,在您导入软件包时,它也不会自动导入这些模块,除非该软件包的
\uuu init\uuuu.py
代表您这样做。在
http
的情况下,
\uuuu init\uuuuuuuuuuuuuuupy
是空的,所以你只需要导入包就不会得到任何免费的东西。

我不得不问谷歌什么是“SeeingWand”。。。有趣的项目,我很想知道它有多聪明。我有一个朋友成功地让它工作了,他说80%的时间魔杖都在现场。。。。但其他20%的描述都很搞笑。我仍在试图弄明白为什么我的工具不能工作-(当它出现时,我会让你知道我的情况。如果你看到新的错误并且搜索没有返回任何现有的答案,你可以发布另一个关于新错误的问题。我认为我的答案会让你克服你在这里描述的直接问题,但我建议你重新考虑你的方法:尝试更新一个非平凡大小的package(我认为这几乎就是您正在使用的所有软件包)从Python 2开始-->Python 3并不容易…除非有很好的理由说明您必须使用Python 3,否则我只需要安装Python 2并使用它。您的生活会轻松得多。这很有效!!,SeeingWand仍然不起作用,但去掉http模块后没有.client属性错误。谢谢
camera = picamera.PiCamera()
headers = {
    'Content-Type': 'application/octet-stream',
    'Ocp-Apim-Subscription-Key': ms_api_key,
}

params = urllib.parse.urlencode({
    'visualFeatures': 'Description',
})
camera_button.wait_for_press()
camera.capture('/tmp/image.jpg')
body = open('/tmp/image.jpg', "rb").read()

try:
    conn = http.client.HTTPsConnection('westcentralus.api.cognitive.microsoft.com')
    conn.request("POST", "/vision/v1.0/analyze?%s"%params, body, headers)
    response = conn.getresponse()
    analysis=json.loads(response.read())
    image_caption = analysis["description"]["captions"][0]["text"].capitalize()
# validate text before system() call; use subprocess in next version
    if re.match("^[a-zA-z ]+$", image_caption):
        system('espeak -ven+f3 -k5 -s120 "' + image_caption + '"')
    else :
        system('espeak -ven+f3 -k5 -s120 "i do not know what i just saw"')

    conn.close()

except Exception as e:
    print (e.args)
import http.client