글쓴이 보관물: litcoder

MacPorts: Orange3 Text Add-on 추가할 때 오류

오래된 Intel Mac은 Monterey이후 업데이트가 지원되지 않기 때문에 최신 버전의 Homebrew도 사용할 수가 없다. 이 때문에 MacPorts를 사용하는데 Orange3에 Text add-on을 설치를 시도할 때 Arch Linux에서와 같은 gensim버전 문제가 생겼다(참조: Arch Linux에서 Orange3 Text add-on 설치문제 해결).

2025년 10월 현재 최신버전인 gensim 4.3.3의 Python version 불일치 때문에 발생하는 문제인데, Arch Linux에서는 이 문제를 Python3.13대신 Python3.12의 가상환경을 만드는 것으로 해결 했었다.

MacPorts환경에서의 default python version을 확인해 보면 오래된 3.6을 가리키고 있는데, Python3.12를 설치해 준 다음 default python version을 3.12로 변경해서 이 문제를 해결할 수 있다.

먼저 MacPorts로 Python3.12를 설치해준다.

# Python3.12 설치
sudo port install python312

그리고 나서 default로 실행되는 python / python3 명령어를 Python3.12로 변경한다.

# python과 python3 명령어에 대한 인터프리터 지정
$ sudo port select --set python3 python312
Selecting 'python312' for 'python3' succeeded. 'python312' is now active.

$ sudo port select --set python python312 
Selecting 'python312' for 'python' succeeded. 'python312' is now active.

# 확인
$ port select --list python 
Available versions for python:
	none
	python312 (active)
	python313

이제, Orange3를 재실행하고 Text add-on을 추가하면 오류없이 설치되어 사용할 수 있다.

Orange3 Text Add-On 추가할 때 빌드오류

Orange3에 Text Add-on을 추가하는 도중 SciPy를 빌드하려 시도하는데 오류가 발생한다. Fortran을 비롯한 의존성이 만족되지 않아서 발생하는 문제인데 여러건의 빌드 오류를 피하려면 SciPy의 Building from Source를 참고해서 필요한 패키지를 미리 설치해 줄 수 있다. ArchLinux의 경우 필요한 패키지는 다음과 같다.

sudo pacman -S gcc-fortran openblas pkgconf base-devel python-setuptools

그리고 나서 필요한 Python package를 설치해주고 재실행한다.

pip install Cython Orange3-text

의존성있는 패키지 중 하나인 gensim은 최신 버전인 4.3.3과 Python3.13의 호환성 문제로 2025년 10월 현재 Python3.13에서 빌드되지 않는다. 그래서 yay로 3.12를 설치하고 가상환경을 새로 만들어서 설치를 진행해 주었다.

OS: ArchLinux
Python: 3.12
PyQt5: 5.15.11
PyQtWebEngine: 5.15.7
scipy: 1.13.1
gensim: 4.3.3
Orange3: 3.39
Orange3-Text: 1.16.3

그나저나 “Fortran이라니, 되게 오래된 코드에 의존성이 있는 건가?”하고 살펴봤더니 은퇴는 커녕 OOP까지 지원하면서 Modern Fortran이라는 이름으로 고성능컴퓨팅(HPC)에서는 짱짱한 현역으로 뛰고 있었다. Workgroup의 활동을 보면 2020년대에 2023에 이은 두번째 표준안을 준비하고 있는 모양이다.

복붙의 함정, 디렉토리를 삭제할 수 없다?

매우 간단한 디렉토리 생성 명령어가 의도대로 동작하지 않고 실패했다. 왜 일까?

ls 명령어의 결과를 보면 알 수 있는데, 부모 디렉토리를 생성하는 -p 옵션이 동작하지 않고 디렉토리로 생성되어 버렸다. 그 다음으로 존재하지 않는 ~/docker/shared 디렉토리를 생성하려고 했으니 명령어가 실패한 것이다.

mkdir 명령어는 사실 어딘가에서 복사 붙여넣기 한 것인데, 이렇게 잘 못 생성된 디렉토리는 왠만해서 삭제가 되지 않는다.

rm -r "./-p"
rm -r -- "./-p"

그 이유는 -p에 붙어 있는 -가 ASCII가 아닌 Unicode U+2013이기 때문인데, 이를 삭제하려면 LC_ALL=C를 앞에 붙여서 임시로 Locale을 변경해 8진수로 표시되는 Unicode 값을 확인하고 그 이름으로 명령어를 입력 하면된다.

rm -r -- ''$'\342\200\223''p'