2016-05-08 7 views
0

Когда я apk add python3 в контейнере Docker, на котором работает альпийское распределение, комбинации клавиш, такие как Ctrl <left arrow>, вместо того, чтобы перемещать курсор целыми словами, распечатывайте подобные вещи (здесь я набрал «спам-яйца» », затем удерживается контроль и нажмите клавишу со стрелкой влево):Как получить readline, работающий с python в alpine

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 

Просто apk add ИНГ readline или pip3 install ИНГ это само по себе не решает проблему.

Как я могу заставить readline работать с python в этой среде?

ответ

1

Похоже, что ключом к этому является в основном случай, когда работа с readline работает, но вам также может потребоваться правильно обрабатывать ваш TERM.

Я попробовал Dockerfile так:

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 

С INPUTRC из https://github.com/frol/docker-alpine-env/blob/master/etc/inputrc, скопированный ниже:

# 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 

Вот несколько ссылок, которые я собрали эту информацию от:

NB - Я знаю, что это, кажется, Daft быть установка Баш, но pip3 install readline не может без него. Также не рекомендуется устанавливать gcc и т. Д., Хотя после этого вы можете выполнить очистку, если вам нужно сделать apk del -в некоторых вещах.

Со всем этим на месте он работал на моем Mac, но не сразу на шпатлевку, хотя я подозреваю, что только установка TERM, YMMV.