1

我是编码新手。圣诞节给了我一个树莓派 4,我正试图用它来制造一个自动喷水灭火系统。我的问题是我无法通过我的 ESP32 将电容式土壤传感器的数据发送到 Pi。我查看了几个在线资源并尝试了几种不同的方法来让我的 ESP32 将数据发送到 Pi,但没有任何积极的结果。使用下面的代码行时,我收到了一个错误。

import time
import machine
adc = machine.ADC(machine.Pin(34))
print(adc.read())

回溯(最近一次调用):文件“/home/pi/Documents/esp32 test.py”,第 2 行,在导入机器中 ModuleNotFoundError:没有名为“机器”的模块

一些堆栈溢出的人在安装模块时遇到了类似的问题,我尝试过使用 pip 和 pip3 但是这些并没有将我的安装从 python2.7 目录移动到 python3.7。我正在使用 python3.7,因为 Thonny IDE 使用它,我认为程序找不到“名为‘machine’的模块”,因为它已保存到 python2.7。我还尝试将'machine-0.0.1.dist-info'从 2.7 到 3.7 的 dist-packages 复制,但发现:

machine-0.0.1.dist-info:创建目录/usr/local/lib/python3.7/dist-packages/machine-0.0.1.dist-info 时出错:权限被拒绝

如果有人能分享他们关于如何将“机器”模块移动到 python3.7 的知识或提出一种不同的方式来让树莓派 4 与 ESP32 通信,我将不胜感激。谢谢。

4

2 回答 2

1

您发布的 Python 代码似乎是旨在在 ESP32 上运行的 MicroPython 代码,而不是在您的 Raspberry Pi 上:

https://docs.micropython.org/en/latest/esp32/quickref.html

注意
不要尝试pip install machine在您的 Raspberry Pi 上运行。它不会下载正确的包。相反,它会安装这个包:https ://pypi.org/project/machine/这根本不是你需要的。


话虽这么说:
使用 pip 安装软件包时,您可能不想在系统范围内安装它们,因为这需要 root 权限,这是一种不好的做法并且可能很危险,因为您让未知代码完全管理员控制您的系统。

有两种选择:

1.使用虚拟环境

在此处阅读更多信息:https ://docs.python.org/3/library/venv.html

基本上:

python3.7 -m venv ~/myvenv
source ~/myvenv/bin/activate
pip install <package>

要处理您的项目,您必须激活虚拟环境。任何体面的 IDE 都有自动执行此操作的选项。
这是最干净的解决方案,因为它将不同项目的包分开。

2.在用户级别安装包

这将安装您的主目录中的软件包~/.local/lib/python3.7/site-packages,因此它不需要 root 权限。

为确保您为正确的 Python 版本安装包,您可以从 Python 运行 pip,而不是pip install直接运行。

python3.7 -m pip install --user <package>
于 2020-04-15T11:56:32.507 回答
0

您可以指定部分或完整形式的版本,以便安装到您想要的 python 版本。

如果要为每个命令选择版本,可以使用如下命令行选项: py -3 -m pip install packagename (for 3.7) py -2 -m pip install packagename (for 2.7)

如果 python 安装正确,这应该可以正常工作。

于 2020-04-15T11:11:33.113 回答