When I apk add python3 in a Docker container running the alpine distribution, key combinations like Ctrl <left arrow>, rather than moving the cursor by whole words, print things like this (here, I typed 'spam eggs', then held down control and hit the left arrow key):
Python 3.5.1 (default, Dec 9 2015, 14:41:32)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> spam ham;5D
Merely apk adding readline or pip3 installing it does not by itself solve the problem.
How can I get readline working with python in this environment?
Looks like the key to this is mostly a case of getting readline working, but you might also have to handle your TERM correctly too.
I tried a Dockerfile like this:
FROM alpine
RUN apk update && \
apk add python3 python3-dev build-base ncurses-dev bash && \
python3 -m ensurepip && \
pip3 install readline
COPY ./inputrc /etc/inputrc
With the inputrc from https://github.com/frol/docker-alpine-env/blob/master/etc/inputrc, copied below:
# do not bell on tab-completion
#set bell-style none
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
$if mode=emacs
# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[7~": beginning-of-line
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
# for rxvt
"\e[8~": end-of-line
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif
Here's a few links that I gathered this info from:
NB - I know it seems daft to be installing bash, but the pip3 install readline fails without it. Also not ideal to have to be installing gcc etc, though you could cleanup after this if you need to by apk del-ing a few things.
With all this in place, it worked on my mac but not immediately on putty, though I suspect that just the TERM setup, YMMV.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With