%20%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20Python%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4%20%EC%8B%A4%ED%8C%A8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
데이터 처리(Linux) 클러스터에서 Python 프로그램을 실행하려고 합니다. Linux 데스크톱에서 클러스터로 ssh를 통해 클러스터로 연결하여 시작하면 프로그램이 제대로 실행되지만, Mac 노트북에서 클러스터로 ssh로 연결하여 실행하려고 하면 실패합니다. 다음 오류가 발생합니다.
[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)
UTF에서 ASCII로의 일부 변환과 관련된 것 같지만 깊이가 없습니다.
Terminal.app과 iterm2 모두에서 동일한 오류가 발생합니다. 그런데 나는 iterm2 쉘 통합을 설치했지만 지금은 제거했습니다.
노트북의 로캘은 다음과 같습니다.
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
원격 서버의 로캘은 다음과 같습니다.
% 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=
이것은 내 Linux 데스크탑의 로케일이며 클러스터의 로케일과 동일합니다.
$ 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=
답변1
올바른 해결책은 에 설명된 대로 터미널 고급 옵션에서 "시작 시 로케일 환경 변수 설정"을 설정 해제하는 것 같습니다.https://blog.remibergsma.com/2012/07/10/setting-locales-corrightly-on-mac-osx-terminal-application/
iterm2에서 동일한 작업을 수행하려면 여기에 설명된 대로 기본 설정 > 프로필 > 터미널 > 자동으로 로케일 변수 설정을 선택 취소해야 합니다.https://apple.stackexchange.com/questions/83428/lang-variable-wrong-in-iterm2-wheres-the-bug
답변2
게시물 OS X 터미널 UTF-8 문제 몇 가지 유용한 조언이 있습니다. 터미널 앱 설정에 도움이 되는 가이드:
~ 안에터미널->기본 설정->설정->고급:
아래에국제적인, 문자 인코딩이 다음으로 설정되어 있는지 확인하세요.유니코드(UTF-8).
아래에에뮬레이션, 다음을 확인하세요.Control-V를 사용하여 비ASCII 입력을 탈출하세요.~이다~ 아니다세트.
이것만으로도 문제를 해결하기에 충분할 수 있습니다.
명령을 사용하여 .로 끝나야 하는 줄을
locale
확인합니다 . 그렇지 않은 경우 bash 또는 홈 디렉터리에 다음과 같은 줄을 추가하세요.LC_CTYPE
.UTF-8
.profile
.bashrc
export LC_CTYPE=your-locale-here.UTF-8
홈 디렉터리에 다음 줄을 추가합니다
.inputrc
(필요한 경우 생성).set meta-flag on set input-meta on set output-meta on set convert-meta off
새 설정을 적용하려면 bash를 다시 시작해야 합니다.