簡體   English   中英

我無法將模塊導入到 Python 3.7,因為它被定向到 python2.7

[英]I cannot import a module to Python 3.7 since it is directed to python2.7

我是編碼新手。 聖誕節給了我一個樹莓派 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 通信,我將不勝感激。 謝謝。

您可以指定部分或完整形式的版本,然后安裝到所需的 python 版本。

如果您想為每個命令安裝 select 版本,您可以使用如下命令行選項: py -3 -m pip 安裝包名(對於 3.7) py -2 -m Z62AD1C2A46C2.D8F3E2C95D3 安裝包名(對於 BABF8D3)

如果 python 安裝正確,這應該可以正常工作。

您發布的 Python 代碼似乎是旨在在 ESP32 上運行的 MicroPython 代碼,而不是在您的 Raspberry Pi 上:

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

筆記
不要嘗試在您的 Raspberry Pi 上運行pip install machine 它不會下載正確的 package。 相反,它會安裝這個 package: 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.在用戶級別安裝package

這會將軟件包安裝在您的主目錄中的~/.local/lib/python3.7/site-packages中,因此它不需要 root 權限。

To make sure that you're installing a package for the right Python version, you can run pip from Python, instead of running pip install directly.

python3.7 -m pip install --user <package>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM