【问题标题】:ImportError: No module named 'RPi'ImportError:没有名为“RPi”的模块
【发布时间】:2017-10-02 02:46:21
【问题描述】:

我一直在我的新树莓派上完全按照本教程 (https://becominghuman.ai/turn-your-raspberry-pi-into-homemade-google-home-9e29ad220075) 进行操作,但一直收到错误提示

Traceback (most recent call last):
    File "/home/pi/main.py", line 10, in <module>
        import RPi.GPIO as GPIO
ImportError: No module named 'RPi'

我目前有两个文件在教程中列出,一个正在读取的 .py 文件

    #!/usr/bin/env python

from __future__ import print_function

import argparse
import os.path
import json

import google.oauth2.credentials
import RPi.GPIO as GPIO
from google.assistant.library import Assistant
from google.assistant.library.event import EventType
from google.assistant.library.file_helpers import existing_file

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
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()
        GPIO.output(25,True)

    print(event)

    if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
            event.args and not event.args['with_follow_on_turn']):
        print()
        GPIO.output(25,False)


def main():
    parser = argparse.ArgumentParser(
        formatter_class=argparse.RawTextHelpFormatter)
    parser.add_argument('--credentials', type=existing_file,
                        metavar='OAUTH2_CREDENTIALS_FILE',
                        default=os.path.join(
                            os.path.expanduser('/home/pi/.config'),
                            'google-oauthlib-tool',
                            'credentials.json'
                        ),
                        help='Path to store and read OAuth2 credentials')
    args = parser.parse_args()
    with open(args.credentials, 'r') as f:
        credentials = google.oauth2.credentials.Credentials(token=None,
                                                            **json.load(f))

    with Assistant(credentials) as assistant:
        for event in assistant.start():
            process_event(event)


if __name__ == '__main__':
    main()

另一个是读取 .sh 文件中的几行代码

    #!/bin/sh
/home/pi/env/bin/python3 -u /home/pi/main.py

任何帮助或建议将不胜感激

【问题讨论】:

  • 您遇到的错误与脚本中的内容无关,请尝试此人的建议。 medium.com/@kevalpatel2106/…我不记得你是否必须做 pip3(或者你正在运行的任何版本的 python)pip(python 版本)
  • 已经试过几次了,还是没有解决问题
  • 当您进入 python3 提示符或 python 提示符并键入“import RPi.GPIO”时会发生什么?使用不同版本导入时会不会出错?
  • 导入和打印版本都没有问题。我正在使用 0.6.3 版的 RPi.GPIO
  • 假设您几乎完全按照本教程进行操作并且不知道为什么要这样做,我会开始尝试将版本从 python 更改为 python3(在文件顶部)我也会可能尝试从 CL 执行(运行 python(文件名))另外,它可能看起来很奇怪,(我记得收到这个错误)确保文件是 unix 格式(LF)而不是 dos(CRLF)你可以安装软件包 dos2unix。 tbh,因为我从未尝试过该教程,所以我不确定。我可以通过它,它会很高兴获得一个免费的谷歌助手。基本上尝试任何事情来获得新的错误。

标签: python bash python-3.x raspberry-pi raspberry-pi3


【解决方案1】:

我刚刚完成了相同的教程。我认为问题与设置 python 环境有关。我确信我的解决方案不是最优雅的,但它让设置正常工作!

首先我运行了以下命令(而不是他在第 4 步中的最后一个命令)

sudo pip3 install --upgrade google-assistant-library

然后在第 6 步中,我运行了以下命令来代替他使用的相应命令

sudo pip3 install --upgrade google-auth-oauthlib[tool]

google-oauthlib-tool --client-secrets "PATH_TO_YOUR_JSON_FILE" --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

最后我把shell脚本改成如下

#!/bin/sh
python3 -u /home/pi/main.py

希望这能有所帮助!

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 2012-12-07
    • 2012-05-23
    • 2019-07-29
    • 2015-07-04
    • 2014-03-15
    • 2017-12-29
    • 2014-09-12
    • 2017-05-09
    相关资源
    最近更新 更多