python - 使用 Python、Linux、Raspberry Pi 和 Docker 配置热敏打印机的问题
问题描述
正在开发用于控制热敏打印机的应用程序。该打印机连接到树莓派 4 的 USB 端口。编程语言为 Python,操作系统为 Linux。控制热敏打印机的脚本正在从 Docker 容器中执行。
打印机配置有错误,需要解决。以下是 Dockerfile、Requirements 和 Error 的脚本:
Dockerfile:
FROM python:3.8.3-alpine
# set work directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycopg2 dependencies
RUN apk update \
&& apk add postgresql-dev gcc python3-dev musl-dev
RUN apk add libjpeg-turbo-dev freetype-dev libpng-dev libusb
RUN apk add --update --no-cache curl jq py3-configobj py3-pip py3-setuptools python3 python3-dev
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# copy entrypoint.sh
COPY ./entrypoint.sh .
# copy project
COPY . .
# run entrypoint.sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
要求:
Django==3.0.7
python-escpos==2.2.0
gunicorn==20.0.4
requests==2.24.0
psycopg2==2.8.5
psycopg2-binary==2.8.5
djangorestframework==3.11.0
django-cors-headers==3.4.0
pyusb==1.1.0
libusb1==1.9.1
libusb==1.0.23b7
pytz
escpos==1.8
错误:
print paper
Traceback (most recent call last):
File "services/receipt_content.py", line 123, in <module>
a = ReceiptHeader("165465481654654", "app/media/loto.png", None)
File "services/receipt_content.py", line 29, in _init_
PrintPaper._init_(self)
File "services/receipt_content.py", line 10, in _init_
self.printer = Usb(0x0fef, 0x811e)
File "/usr/local/lib/python3.8/site-packages/escpos/printer.py", line 53, in _init_
self.open(usb_args)
File "/usr/local/lib/python3.8/site-packages/escpos/printer.py", line 60, in open
self.device = usb.core.find(**usb_args)
File "/usr/local/lib/python3.8/site-packages/usb/core.py", line 1297, in find
raise NoBackendError('No backend available')
usb.core.NoBackendError: No backend available
解决方案
为了在 docker 容器中使用 USB 设备,您必须通过--device
选项挂载设备文件或将容器运行为--privileged
. Raspberry Pi 可能无论如何都不需要注意安全性。
推荐阅读
- ibm-watson - 调用 AuthorizationV1 获取语音转文本令牌时获取“必须设置错误验证器”
- c - 如何从另一个程序访问信号量数据
- javascript - 网络摄像头不转到页面
- video-streaming - 以 HTML5 播放存储在云平台上的视频
- python - 如何确定类不相等
- javascript - “gameActivity”键在开始时改变,但它应该停止
- node.js - “npm run”命令在 Windows 上失败
- c# - 如何在 EF6 和 asp.net core 3 之间建立连接
- java - 如何记录 doPost() 方法?
- javascript - Keycloak - 如何禁用两个(Angular)客户端应用程序之间的共享会话?