Usar virtualenv con Anaconda requiere LD_LIBRARY_PATH cambios, pero los saltos de Emacs
-
21-12-2019 - |
Pregunta
Estoy experimentando un problema similar al descrito en este post y este post pero que yo creo que es diferente (o al menos no es respondida por cualquiera de las respuestas o comentarios a los artículos con enlaces).También he encontrado esta respuesta de grupos de Google diciendo no a utilizar LD_LIBRARY_PATH con Anaconda, pero creo que es incorrecto.
Puedo configurar el virtualenv y virtualenvwrapper, como se explica aquí.
He instalado Anaconda a /home/usrname/anaconda
Traté de crear un virtualenv para Anaconda como este:
mkvirtualenv anaconda -p /home/usrname/anaconda/bin/python
pero recibió los siguientes errores que se indican a toda la búsqueda de-sistema-python-lugar-de-descargar-2.7.5-python Acaconda problema:
espears@espears-w:~/anaconda/bin$ mkvirtualenv anaconda -p /home/espears/anaconda/bin/python
Running virtualenv with interpreter /home/espears/anaconda/bin/python
New python executable in anaconda/bin/python
Installing setuptools, pip...
Complete output from command /home/espears/anacon.../anaconda/bin/python -c "import sys, pip; pip...ll\"] + sys.argv[1:])" setuptools pip:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/virtualenv_support/pip-1.5-py2.py3-none-any.whl/pip/__init__.py", line 3, in <module>
File "/home/espears/anaconda/lib/python2.7/optparse.py", line 77, in <module>
import textwrap
File "/home/espears/anaconda/lib/python2.7/textwrap.py", line 10, in <module>
import string, re
File "/home/espears/anaconda/lib/python2.7/string.py", line 83, in <module>
import re as _re
File "/home/espears/anaconda/bin/anaconda/lib/python2.7/re.py", line 105, in <module>
import sre_compile
File "/home/espears/anaconda/bin/anaconda/lib/python2.7/sre_compile.py", line 14, in <module>
import sre_parse
File "/home/espears/anaconda/bin/anaconda/lib/python2.7/sre_parse.py", line 17, in <module>
from sre_constants import *
File "/home/espears/anaconda/bin/anaconda/lib/python2.7/sre_constants.py", line 18, in <module>
from _sre import MAXREPEAT
ImportError: cannot import name MAXREPEAT
----------------------------------------
...Installing setuptools, pip...done.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 2334, in <module>
main()
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 820, in main
symlink=options.symlink)
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 988, in create_environment
install_wheel(to_install, py_executable, search_dirs)
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 956, in install_wheel
'PIP_NO_INDEX': '1'
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 898, in call_subprocess
% (cmd_desc, proc.returncode))
OSError: Command /home/espears/anacon.../anaconda/bin/python -c "import sys, pip; pip...ll\"] + sys.argv[1:])" setuptools pip failed with error code 1
Yo exportado /home/espears/anaconda/lib/
a la LD_LIBRARY_PATH
y, a continuación, el virtualenv comando trabajado con ningún problema en absoluto.Entonces yo podría hacer workon anaconda
y la ubicación correcta de la anaconda 2.7.5 versión de Python y todo fue genial.
Pero luego traté de lanzamiento de Emacs, y aparece (como en los enlaces puestos en la parte superior) que de alguna manera Anaconda colocación en LD_LIBRARY_PATH
crea un problema para Emacs:
espears@espears-w:~$ emacs
Gtk-Message: Failed to load module "canberra-gtk-module"
emacs: symbol lookup error: /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0: undefined symbol: cairo_ft_font_options_substitute
Así que la pregunta es:¿qué va mal?Si me saques el contenido de LD_LIBRARY_PATH
a continuación, la anaconda virtualenv sólo utiliza el sistema por defecto de Python.Pero si dejo LD_LIBRARY_PATH
solo, no puedo lanzamiento de Emacs.
Agregó
Aquí está la salida de ldd (which emacs)
después de la exportación de las cosas necesarias para la Anaconda para LD_LIBRARY_PATH
:
espears@espears-w:~$ export LD_LIBRARY_PATH='/home/espears/anaconda/lib/':$LD_LIBRARY_PATH
espears@espears-w:~$ ldd $(which emacs)
linux-vdso.so.1 => (0x00007fff0a7fe000)
libtiff.so.4 => /usr/lib/x86_64-linux-gnu/libtiff.so.4 (0x00007f504f455000)
libjpeg.so.8 => /home/espears/anaconda/lib/libjpeg.so.8 (0x00007f504f21e000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f504eff5000)
libm.so.6 => /home/espears/anaconda/lib/libm.so.6 (0x00000032b9600000)
libgif.so.4 => /usr/lib/x86_64-linux-gnu/libgif.so.4 (0x00007f504edec000)
libXpm.so.4 => /usr/lib/x86_64-linux-gnu/libXpm.so.4 (0x00007f504ebda000)
libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f504e552000)
libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f504e2d4000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f504df84000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f504dd64000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f504db1b000)
libcairo.so.2 => /home/espears/anaconda/lib/libcairo.so.2 (0x00007f504d841000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f504d5f2000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f504d2fd000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f504d0f4000)
libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f504ceda000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f504cba5000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f504c99a000)
libXft.so.2 => /usr/lib/x86_64-linux-gnu/libXft.so.2 (0x00007f504c785000)
libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007f504c498000)
librsvg-2.so.2 => /usr/lib/x86_64-linux-gnu/librsvg-2.so.2 (0x00007f504c262000)
libMagickWand.so.4 => /usr/lib/libMagickWand.so.4 (0x00007f504bf4d000)
libMagickCore.so.4 => /usr/lib/libMagickCore.so.4 (0x00007f504baca000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f504b8c1000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f504b67d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f504b460000)
libxml2.so.2 => /home/espears/anaconda/lib/libxml2.so.2 (0x00007f504b114000)
libgpm.so.2 => /usr/lib/x86_64-linux-gnu/libgpm.so.2 (0x00007f504af0e000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f504ace7000)
libgconf-2.so.4 => /usr/lib/x86_64-linux-gnu/libgconf-2.so.4 (0x00007f504aab8000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f504a899000)
libfreetype.so.6 => /home/espears/anaconda/lib/libfreetype.so.6 (0x00007f504a612000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f504a3db000)
libotf.so.0 => /usr/lib/libotf.so.0 (0x00007f504a1c6000)
libm17n-flt.so.0 => /usr/lib/libm17n-flt.so.0 (0x00007f5049fbb000)
libm17n-core.so.0 => /usr/lib/libm17n-core.so.0 (0x00007f5049d8d000)
libgnutls.so.26 => /usr/lib/x86_64-linux-gnu/libgnutls.so.26 (0x00007f5049ad1000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5049711000)
libz.so.1 => /home/espears/anaconda/lib/libz.so.1 (0x00007f50494fb000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f50492f7000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f50490ea000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f5048eda000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f5048cd4000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f5048ab2000)
libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f50488a8000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f504867e000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f504846d000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f5048269000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f5048061000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f5047e57000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f5047c53000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f5047a50000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f5047833000)
libpixman-1.so.0 => /home/espears/anaconda/lib/libpixman-1.so.0 (0x00007f50475b4000)
libpng15.so.15 => /home/espears/anaconda/lib/libpng15.so.15 (0x00007f504737d000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f5047174000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5046f37000)
libuuid.so.1 => /home/espears/anaconda/lib/libuuid.so.1 (0x00007f5046d33000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f5046b14000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5046910000)
libcroco-0.6.so.3 => /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3 (0x00007f50466d6000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f50464c7000)
liblcms.so.1 => /usr/lib/x86_64-linux-gnu/liblcms.so.1 (0x00007f5046290000)
liblqr-1.so.0 => /usr/lib/liblqr-1.so.0 (0x00007f504607c000)
libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f5045e6b000)
libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f5045c61000)
/lib64/ld-linux-x86-64.so.2 (0x00007f504f6ce000)
libdbus-glib-1.so.2 => /usr/lib/x86_64-linux-gnu/libdbus-glib-1.so.2 (0x00007f5045a3a000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f5045810000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f5045606000)
libtasn1.so.3 => /usr/lib/x86_64-linux-gnu/libtasn1.so.3 (0x00007f50453f5000)
libgcrypt.so.11 => /lib/x86_64-linux-gnu/libgcrypt.so.11 (0x00007f5045177000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f5044f64000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f5044d60000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f5044b5a000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f5044954000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f504474f000)
Solución
Puedes probar cualquiera de estas sugerencias:
unset
LD_LIBRARY_PATH
al iniciaremacs
por ejemplo, mediante la definición de un alias:alias emacs='LD_LIBRARY_PATH= emacs'
(ojo con los espacios en blanco), o podríaexportación LD_PRELOAD=$(ldd $(que emacs)|grep libpangocairo|awk '{print $3}') para forzar el uso de todo el sistema de instalar
libpangocairo
biblioteca.Pero esto podría romper anaconda.
Otros consejos
La razón que usted no desea utilizar LD_LIBRARY_PATH es que cambia el orden de la dinámica de la biblioteca de los cargadores de la ruta de búsqueda.Porque Anaconda pruebas de todas las bibliotecas por lo que trabajar juntos en todos los sistemas de paquetes de muchas bibliotecas que son mayores que el sistema de versiones.Emacs tiene es el uso de un sistema antiguo de la biblioteca que provoca el accidente.
Ahora, la razón por la mkvirtualenv está fallando es que el python y otras bibliotecas vinculadas con la Anaconda no se copian correctamente y el enlace puntero en la dinámica de las bibliotecas están rotos.
La mejor solución es el uso de la conda herramienta para crear ambientes.Por ejemplo:
conda create -p ~/anaconda/envs/test2 anaconda=1.4.0 python=2.7 numpy=1.6