首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModuleNotFoundError: raspberry pi上没有名为“xmodem”的模块

ModuleNotFoundError: raspberry pi上没有名为“xmodem”的模块
EN

Stack Overflow用户
提问于 2021-02-05 01:29:33
回答 1查看 372关注 0票数 1

非常新手在Python编程,我正在尝试建立一个覆盆子圆周率的flask网络应用程序,将DNC g代码从一个文本文件通过串口到一个较老的哈斯数控铣床。该工厂使用XMODEM协议。我一直在遵循https://pypi.org/project/xmodem/上的文档。

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

代码语言:javascript
复制
  File "dncPi.py", line 2, in <module>
    from xmodem import XMODEM
ModuleNotFoundError: No module named 'xmodem' 

运行pip3 install xmodem会显示:

代码语言:javascript
复制
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路径的一部分:

代码语言:javascript
复制
python3 -c "import sys; print(':'.join(x for x in sys.path if x))"

下面是我的dncPi.py代码:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2021-02-06 01:08:01

tripleee说对了。我没想到sudo会改变环境。sudo pip3 install xmodem修复了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66050772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档