Я не могу импортировать модуль в Python 3.7, поскольку он направлен на python2.7
Я новичок в программировании. На Рождество мне подарили raspberry pi 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, потому что Thonny IDE использует его, и я думаю, что программа не может найти "модуль с именем 'machine'", потому что он сохранен в python2.7. Я также попытался скопировать 'machine-0.0.1.dist-info' из пакетов dist от 2.7 до 3.7, но обнаружил следующее:
machine-0.0.1.dist-info: ошибка при создании каталога /usr/local/lib/python3.7/dist-packages/machine-0.0.1.dist-info: отказано в разрешении
Я был бы признателен, если бы кто-нибудь поделился своими знаниями о том, как переместить "машинный" модуль на python3.7 или представил другой способ заставить raspberry pi 4 взаимодействовать с ESP32. Спасибо.
2 ответа
Опубликованный вами код Python, похоже, является кодом MicroPython, который предназначен для работы на ESP32, а не на вашем 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, вы можете запустить pip из Python вместо запуска pip install
прямо.
python3.7 -m pip install --user <package>
Вы можете указать версии либо в частичной, либо в полной форме, чтобы затем установить желаемые версии Python.
Если вы хотите выбрать версии для каждой команды, вы можете использовать следующие параметры командной строки: py -3 -m pip install packagename (для 3.7) py -2 -m pip install packagename (для 2.7)
Это должно работать хорошо, если питон установлен правильно.