我无法将模块导入Python3.7,因为它被定向到python2.7

2024-06-01 09:32:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉编码。圣诞节我得到了一个树莓皮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:没有名为“machine”的模块

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

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

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


Tags: 模块数据importinfo目录机器编码dist
2条回答

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

如果要为每个命令选择版本,可以使用以下命令行选项: py-3-m pip安装包名称(适用于3.7) py-2-m pip安装包名称(适用于2.7)

如果python安装正确,这应该可以很好地工作

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

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

注意
不要试图在树莓圆周率上运行pip install machine它不会下载正确的软件包。相反,它会安装这个软件包:https://pypi.org/project/machine/,这根本不是您需要的


话虽如此:
当使用pip安装软件包时,您可能不想在系统范围内安装它们,因为这需要根权限,这是一种不好的做法,而且可能很危险,因为您正在为未知代码授予管理员对系统的完全控制权

有两种选择:

一,。使用虚拟环境

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

基本上:

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

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

二,。在用户级别安装软件包

这将在主目录中的~/.local/lib/python3.7/site-packages中安装程序包,因此不需要root权限

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

python3.7 -m pip install  user <package>

相关问题 更多 >