%20desde%20una%20terminal%20mac.png)
Estoy intentando ejecutar un programa Python en un clúster de procesamiento de datos (Linux). El programa funciona bien si me dirijo al clúster desde mi escritorio Linux y lo inicio, pero falla si me conecto al clúster desde mi computadora portátil Mac e intento ejecutarlo. Aparece el siguiente error:
[muzzle@cluster]~% acme-calibrate detector DARK --in-folder /gpfs/acme/exp/instrument/201802/experiment1/raw --out-folder /home/muzzle/dark_out --run 28
Traceback (most recent call last):
File "/home/boff/calframework/framework/extern/bin/acme-calibrate", line 11, in <module>
load_entry_point('acme-Offline-Calibration', 'console_scripts', 'acme-calibrate')()
File "/home/boff/calframework/framework/extern/lib/python3.4/site-packages/setuptools-39.1.0-py3.4.egg/pkg_resources/__init__.py", line 480, in load_entry_point
File "/home/boff/calframework/framework/extern/lib/python3.4/site-packages/setuptools-39.1.0-py3.4.egg/pkg_resources/__init__.py", line 2691, in load_entry_point
File "/home/boff/calframework/framework/extern/lib/python3.4/site-packages/setuptools-39.1.0-py3.4.egg/pkg_resources/__init__.py", line 2322, in load
File "/home/boff/calframework/framework/extern/lib/python3.4/site-packages/setuptools-39.1.0-py3.4.egg/pkg_resources/__init__.py", line 2328, in resolve
File "/home/boff/pycalibrate_tmp/acme_calibrate/calibrate.py", line 236, in <module>
nb = nbformat.read(f, as_version=4)
File "/home/boff/calframework/framework/extern/lib/python3.4/site-packages/nbformat/__init__.py", line 141, in read
return reads(fp.read(), as_version, **kwargs)
File "/home/boff/calframework/framework/extern/lib/python3.4/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 150: ordinal not in range(128)
Parece estar relacionado con alguna conversión de UTF a ASCII, pero estoy fuera de mi alcance.
Recibo el mismo error tanto con terminal.app como con iterm2. Por cierto, solía tener instalada la integración del shell iterm2, pero ahora la eliminé.
La configuración regional en la computadora portátil es:
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
La configuración regional en el servidor remoto es:
% locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Esta es la configuración regional en mi escritorio Linux, es idéntica a la del clúster:
$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
Respuesta1
Parece que la solución correcta fue desarmar "Establecer variables de entorno local al inicio" en las opciones avanzadas del terminal como se describe enhttps://blog.remibergsma.com/2012/07/10/setting-locales-correctly-on-mac-osx-terminal-application/
Para hacer lo mismo en iterm2, debe anular la selección de Preferencias > Perfiles > Terminal > Establecer variables locales automáticamente, como se describe aquíhttps://apple.stackexchange.com/questions/83428/lang-variable-wrong-in-iterm2-wheres-the-bug
Respuesta2
El cargo Problemas con OS X Terminal UTF-8 tiene algunos consejos útiles, basados en Una guía para ayudar a configurar aplicaciones de terminal:
EnTerminal->Preferencias->Configuración->Avanzado:
BajoInternacional, asegúrese de que la codificación de caracteres esté configurada enUnicódigo (UTF-8).
BajoEmulación, asegurarse de queEscapar de la entrada no ASCII con Control-Vesnocolocar.
Esto por sí solo puede ser suficiente para resolver el problema.
Utilice el comando
locale
y observe laLC_CTYPE
línea, que debería terminar en.UTF-8
. Si no es así, en bash.profile
o.bashrc
en el directorio de inicio, agregue una línea como esta:export LC_CTYPE=your-locale-here.UTF-8
Agregue las siguientes líneas al
.inputrc
directorio de inicio (créelo si es necesario):set meta-flag on set input-meta on set output-meta on set convert-meta off
Debes reiniciar bash para que la nueva configuración surta efecto.