gpt4 book ai didi

python - 没有名为 pathlib2 的模块

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:49 25 4
gpt4 key购买 nike

我一直致力于让 Google 智能助理在我的 Raspberry Pi 3 上运行。它正在工作,但我在执行此特定步骤时遇到问题: https://developers.google.com/assistant/sdk/guides/library/python/extend/handle-device-commands

此步骤包括向 Pi 发送开/关命令以打开或关闭 LED 灯泡。我已确认面包板和 LED 设置正确,因为我可以通过 Python 脚本打开或关闭 LED。

但是,按照该页面中的步骤并尝试运行以下命令“python hotword.py --device_model_id my-model”(实际上是:python hotword.py --device_model_id assistantraspi-1d671-pigooglev2-8n98u3)我收到以下错误:导入错误:没有名为 pathlib2 的模块

我包括该文件 (hotword.py) 的副本

#!/usr/bin/env python

# Copyright (C) 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


from __future__ import print_function

import argparse
import json
import os.path
import pathlib2 as pathlib
import RPi.GPIO as GPIO

import google.oauth2.credentials

from google.assistant.library import Assistant
from google.assistant.library.event import EventType
from google.assistant.library.file_helpers import existing_file
from google.assistant.library.device_helpers import register_device

try:
FileNotFoundError
except NameError:
FileNotFoundError = IOError


WARNING_NOT_REGISTERED = """
This device is not registered. This means you will not be able to use
Device Actions or see your device in Assistant Settings. In order to
register this device follow instructions at:

https://developers.google.com/assistant/sdk/guides/library/python/embed/register-device
"""


def process_event(event):
"""Pretty prints events.

Prints all events that occur with two spaces between each new
conversation and a single space between turns of a conversation.

Args:
event(event.Event): The current event to process.
"""
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
print()

print(event)

if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
event.args and not event.args['with_follow_on_turn']):
print()
if event.type == EventType.ON_DEVICE_ACTION:
for command, params in event.actions:
print('Do command', command, 'with params', str(params))
if command == "action.devices.commands.OnOff":
if params['on']:
print('Turning the LED on.')
GPIO.output(25, 1)
else:
print('Turning the LED off.')
GPIO.output(25, 0)

def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--device-model-id', '--device_model_id', type=str,
metavar='DEVICE_MODEL_ID', required=False,
help='the device model ID registered with Google')
parser.add_argument('--project-id', '--project_id', type=str,
metavar='PROJECT_ID', required=False,
help='the project ID used to register this device')
parser.add_argument('--device-config', type=str,
metavar='DEVICE_CONFIG_FILE',
default=os.path.join(
os.path.expanduser('~/.config'),
'googlesamples-assistant',
'device_config_library.json'
),
help='path to store and read device configuration')
parser.add_argument('--credentials', type=existing_file,
metavar='OAUTH2_CREDENTIALS_FILE',
default=os.path.join(
os.path.expanduser('~/.config'),
'google-oauthlib-tool',
'credentials.json'
),
help='path to store and read OAuth2 credentials')
parser.add_argument('-v', '--version', action='version',
version='%(prog)s ' + Assistant.__version_str__())

args = parser.parse_args()
with open(args.credentials, 'r') as f:
credentials = google.oauth2.credentials.Credentials(token=None,
**json.load(f))

device_model_id = None
last_device_id = None
try:
with open(args.device_config) as f:
device_config = json.load(f)
device_model_id = device_config['model_id']
last_device_id = device_config.get('last_device_id', None)
except FileNotFoundError:
pass

if not args.device_model_id and not device_model_id:
raise Exception('Missing --device-model-id option')

# Re-register if "device_model_id" is given by the user and it differs
# from what we previously registered with.
should_register = (
args.device_model_id and args.device_model_id != device_model_id)

device_model_id = args.device_model_id or device_model_id

with Assistant(credentials, device_model_id) as assistant:
events = assistant.start()

device_id = assistant.device_id
print('device_model_id:', device_model_id)
print('device_id:', device_id + '\n')
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)

# Re-register if "device_id" is different from the last "device_id":
if should_register or (device_id != last_device_id):
if args.project_id:
register_device(args.project_id, credentials,
device_model_id, device_id)
pathlib.Path(os.path.dirname(args.device_config)).mkdir(
exist_ok=True)
with open(args.device_config, 'w') as f:
json.dump({
'last_device_id': device_id,
'model_id': device_model_id,
}, f)
else:
print(WARNING_NOT_REGISTERED)

for event in events:
process_event(event)


if __name__ == '__main__':
main()

最佳答案

您是否尝试过使用 pippip3 安装 pathlib2?请尝试

pip install pathlib2

如果您使用的是 Python2,并且

pip3 install pathlib2

如果您使用的是 Python3。但是,如果未找到 pip,请尝试使用

安装它
apt-get install python-pip python3-pip

关于python - 没有名为 pathlib2 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635854/

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