ipython quejándose de readline

Cuando instalo ipython en mi osx y lo ejecuto, recibo la siguiente advertencia:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ site-packages/IPython/utils/rlineimpl.py:96: RuntimeWarning: Leopard libedit detected - readline will not be wel behaved including some crashes on tab completion, and incorrect history navigation. It is highly recommended that you install readline, which is easy_installable with: 'easy_install readline' 

He instalado readline y no uso el sistema python que se instaló originalmente en /Library/Frameworks/Python.framework/Versions/2.7/bin/python$ . El /usr/bin/python apunta a la versión 2.7 como se muestra a continuación

 uname -a Darwin macbook.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386 $sudo pip install readline ipython $ipython --version 0.11 $/usr/bin/python --version # Python 2.7.1 $which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python 

He leído la pregunta en Python. La modificación de sys.path no funciona . Agregué /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/readline-6.2.1-py2.7.egg-info al /Library/Frameworks/Python.framework/Versions/2.7/bin/ipython para que ahora se vea así: http://pastebin.com/raw.php?i=dVnxufbS

pero no puedo entender por qué recibo el siguiente error:

 File "/Library/Frameworks/Python.framework/Versions/2.7/bin/ipython", line 9 sys.path.insert(0,"/Library/Frameworks/Python.framework/Versions/2.7/lib/ python2.7/site-packages/readline-6.2.1-py2.7.egg-info") 

No creo que la ruta anterior sea un problema, y ​​mi objective es hacer que ipython funcione sin quejarme de Readline, aunque esté instalado e importe correctamente.

Cuando pip instala readline, nunca se importará, porque readline.so va en los paquetes de sitio, que terminan detrás del sistema libedit uno, ubicado en lib-dynload (el orden de la ruta OSX Python es muy extraño). easy_install -a readline realmente instalará readline utilizable.

Por lo tanto, puede usar easy_install o usar pip and muck con PYTHONPATH / sys.path (que en esencia significa: NO USE PIP).

Un poco más de detalles en la lista de IPython (aunque realmente no hay nada específico de IPython sobre este tema): http://mail.scipy.org/pipermail/ipython-user/2011-September/008426.html

EDITAR: nota extra sobre virtualenv.

Hay un error en virtualenv <1.8.3, donde readline no se configuraría correctamente cuando creas un env.

Si no te importa andar con tu PYTHONPATH, aquí te explicamos cómo puedes deshacerte de esa molesta advertencia:

 # move site-packages to the front of your sys.path import sys for i in range(len(sys.path)): if sys.path[i].endswith('site-packages'): path = sys.path.pop(i) sys.path.insert(0, path) break 

Si está usando Django, puede poner esto en el método ipython de su sitio-packages / django / core / management / commands / shell.py para que se ejecute cuando ejecute el ./manage.py shell .

Nota adicional para los futuros lectores de esta respuesta.

En mi caso, ejecutando una instalación de MacPorts de IPython, había varias versiones de easy_install en / opt / local / bin /, pero ningún enlace simbólico sin versión apuntaba a la más actual. Realizando easy_install-2.7 -a readline funcionó.

También estoy usando ipython brew instalado y tuve un problema similar.

 ⚡ easy_install-3.7 -a readline Searching for readline Reading https://pypi.org/simple/readline/ Download error on https://pypi.org/simple/readline/: unknown url type: https -- Some packages may not be found! Couldn't find index page for 'readline' (maybe misspelled?) Scanning index of all packages (this may take a while) Reading https://pypi.org/simple/ Download error on https://pypi.org/simple/: unknown url type: https -- Some packages may not be found! No local packages or working download links found for readline error: Could not find suitable distribution for Requirement.parse('readline') (--always-copy skips system and development eggs) 

Solución:

 ⚡ brew install readline Updating Homebrew... Warning: readline 7.0.5 is already installed, it's just not linked You can use `brew link readline` to link this version. ⚡ brew link readline Warning: readline is keg-only and must be linked with --force ⚡ brew link readline --force Linking /usr/local/Cellar/readline/7.0.5... 16 symlinks created 

Resultado:

 ⚡ ipython Python 3.7.2 (default, Dec 27 2018, 07:35:06) Type 'copyright', 'credits' or 'license' for more information IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help. >>> ~/.pyrc loaded successfully