ModuleNotFoundError:树莓派上没有名为'xmodem'的模块



我对Python编程真的很陌生,我正在尝试为树莓pi构建一个flask web应用程序,该应用程序将通过串行端口从文本文件中DNC g代码发送到一个旧的HASS数控铣削机。磨机使用XMODEM协议。我一直在关注文档https://pypi.org/project/xmodem/.

当我从命令行运行python3 dncPi.py时,我得到以下错误:

File "dncPi.py", line 2, in <module>
from xmodem import XMODEM
ModuleNotFoundError: No module named 'xmodem' 

运行pip3 install xmodem显示:

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: xmodem in /home/pi/.local/lib/python3.7/site-packages (0.4.6)

我已经检查了/home/pi/.local/lib/python3.7/site-packages是python3路径的一部分,带有:

python3 -c "import sys; print(':'.join(x for x in sys.path if x))"

这是我的dncPi.py代码:

import serial
from xmodem import XMODEM
from flask import Flask, render_template, request
ser = serial.Serial('/dev/ttyAMA0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
def getc(size):
return ser.read(size) or None
def putc(data):
return ser.write(data)
modem = XMODEM(getc, putc)
app = Flask(__name__)
@app.route("/")
def index():
print(request.method)
if request.method == 'POST':
if request.form.get('Send NC') == 'Send NC':
filename = request.form.get('Filename')
stream = open('/mnt/CNC/DNC/' + filename + '.nc', 'rb')
status = modem.send(stream, retry=8)
if status:
print(filename + ".nc Sent")
else:
print(filename + ".nc Send Failure")
elif request.form.get('Abort') == 'Abort':
modem.abort()
print("Aborted")
else:
# pass # unknown
return render_template("index.html")
elif request.method == 'GET':
# return render_template("index.html")
print("No Post Back Call")
return render_template("index.html")
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)

三元组正确无误。我没想到须藤会改变环境。sudo pip3 install xmodem修复了它。

最新更新