Last Reviewed:


Installation with PIP

Installation should be rather straight-forward. python-escpos is on PyPi, so you can simply enter:

pip install python-escpos[all]

This should install all necessary dependencies. Apart from that python-escpos is for some versions also available as a Debian package. If you want to always benefit from the newest stable releases you should always install from PyPi. If you use the --pre parameter for pip, you will get the latest pre-release.

The following installation options exist:

  • all: install all packages available for this platform

  • usb: install packages required for USB printers

  • serial: install packages required for serial printers

  • win32: install packages required for win32 printing (only Windows)

  • cups: install packages required for CUPS printing

Other installation methods

Officially, no other installation methods are supplied.

If you want to install nevertheless from another source, please make sure that you have received the correct package and that the capabilities data is properly integrated. When packaging from source please read the developer information in Repository.

If your packaging method breaks the resource system from setuptools, it might be necessary to supply the path to the capabilities file: Advanced Usage: change capabilities-profile.

Setup udev for USB-Printers

  1. Get the Product ID and Vendor ID from the lsusb command # lsusb  Bus 002 Device 001: ID 1a2b:1a2b Device name. (Or whichever way your system supplies to get the PID and VID.)

  2. Create a udev rule to let users belonging to dialout group use the printer. You can create the file /etc/udev/rules.d/99-escpos.rules and add the following: SUBSYSTEM=="usb", ATTRS{idVendor}=="1a2b", ATTRS{idProduct}=="1a2b", MODE="0664", GROUP="dialout" Replace idVendor and idProduct hex numbers with the ones that you got from the previous step. Note that you can either, add yourself to “dialout” group, or use another group you already belongs instead “dialout” and set it in the GROUP parameter in the above rule.

  3. Restart udev # sudo service udev restart In some new systems it is done with # sudo udevadm control --reload

Enabling tab-completion in CLI

python-escpos has a CLI with tab-completion. This is realized with argcomplete. In order for this to work you have to enable tab-completion, which is described in the manual of argcomplete.

If you only want to enable it for python-escpos, or global activation does not work, try this:

eval "$(register-python-argcomplete python-escpos)"