본문 바로가기

연구/내 연구공간

[설치] MPI-IS mesh github 설치

반응형

libboost-dev 위치 설정 :

/usr/lib/x86_64-linux-gnu

 

 

 

https://github.com/MPI-IS/mesh

 

GitHub - MPI-IS/mesh: MPI-IS Mesh Processing Library

MPI-IS Mesh Processing Library. Contribute to MPI-IS/mesh development by creating an account on GitHub.

github.com

위 깃헙 코드를 사용하기 위해 README 를 따라가다가 나중에 다시 보면 어려워할 부분이 있는거같아 기록하고자 한다.

 

$ BOOST_INCLUDE_DIRS=/path/to/boost/include make all

여기서 /path/to/boost/include 부분은 libboost-dev 가 설치된 부분의 경로를 적으라는 말인데 내 컴퓨터에 경우에는 

/usr/lib/x86_64-linux-gnu

 

 

이었다. 어떻게 찾았냐면 인터넷을 참고하기도 했고 저 경로에서 아래의 명령어를 치면 다음과 같은 결과를 출력했었다.

$ ls | grep boost
libboost_date_time.so.1.65.1
libboost_filesystem.so.1.65.1
libboost_iostreams.so.1.65.1
libboost_locale.so.1.65.1
libboost_system.so.1.65.1
libboost_thread.so.1.65.1

 

따라서 정리하자면 git repository 안에서 다음의 명령어를 입력하면 된다.

$ BOOST_INCLUDE_DIRS=/usr/lib/x86_64-linux-gnu make all

근데 잘 수행하다가 다음과 같은 에러를 출력하고 자꾸 명령 수행이 중단됐다.

ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
Makefile:5: recipe for target 'all' failed
make: *** [all] Error 1

 

(1) 이런 대충 보면 PyYAML 관련 오류인데 찾아보니 다음의 명령어로 간단히 해결되기도 하더라.

$ pip install --ignore-installed PyYAML

 

근데 (1) 명령어를 입력하고 다시 make all 명령어를 입력했는데도 안되는 경우가 있어서 이런 상황에서의 또다른 간단한 해결책을 제시한다. 현재 repository 에서 make 하고자 하는 Makefile 파일을 보면 다음과 같이 작성돼 있다.

# Makefile for mesh package
package_name := mesh_package

all:
        @echo "\033[0;36m----- [" ${package_name} "] Installing with the interpreter `which python` (version `python --version | cut -d' ' -f2`)\033[0m"
        @pip install --upgrade -r requirements.txt && pip list
        @pip install --no-deps --install-option="--boost-location=$$BOOST_INCLUDE_DIRS" --verbose --no-cache-dir .

import_tests:
        @echo "\033[0;33m----- [" ${package_name} "] Performing import tests\033[0m"
        @PSBODY_MESH_CACHE=`mktemp -d -t mesh_package.XXXXXXXXXX` python -c "from psbody.mesh.mesh import Mesh"
        @python -c "from psbody.mesh.meshviewer import MeshViewers"
        @echo "\033[0;33m----- [" ${package_name} "] OK import tests\033[0m"

unit_tests:
        @if test "$(USE_NOSE)" = "" ; then \
                echo "\033[0;33m----- [" ${package_name} "] Running tests using unittest, no report file\033[0m" ; \
                PSBODY_MESH_CACHE=`mktemp -d -t mesh_package.XXXXXXXXXX` python -m unittest -v ; \
        else \
                echo "\033[0;33m----- [" ${package_name} "] Running tests using nosetests\033[0m" ; \
                pip install nose ; \
                PSBODY_MESH_CACHE=`mktemp -d -t mesh_package.XXXXXXXXXX` nosetests -v --with-xunit; \
        fi ;

tests: import_tests unit_tests

# Creating source distribution
sdist:
        @echo "\033[0;33m----- [" ${package_name} "] Creating the source distribution\033[0m"
        @python setup.py sdist

# Creating wheel distribution
wheel:
        @echo "\033[0;33m----- [" ${package_name} "] Creating the wheel distribution\033[0m"
        @pip install wheel
        @python setup.py --verbose build_ext --boost-location=$$BOOST_INCLUDE_DIRS bdist_wheel

# Build documentation
documentation:
        @echo "\033[0;33m----- [" ${package_name} "] Building Sphinx documentation\033[0m"
        @pip install -U sphinx sphinx_bootstrap_theme
        @cd doc && make html

clean:
        @rm -rf build
        @rm -rf dist
        @rm -rf psbody_mesh.egg-info
        @rm -rf *.xml

근데 여기서 all 에 대한 명령이 수행이 안되는거니까 그 부분을 보면 되는데 

'all :' 부분에 다음을 보면 make all 을 통해 어떤 라이브러리를 설치하라는 건지 알 수 있다.

@pip install --upgrade -r requirements.txt && pip list

라이브러리는 requirements.txt 에 명시돼 있을 테니 해당 파일에 들어가서 에러를 일으키는 pyyaml 부분을 주석처리하고 다시 설치를 진행해보면 설치가 잘 완료되더라.

 

반응형