Anaconda를 이용한 CVXPY 설치

학생 신분이 아니다보니 이제 MATLAB 쓰는 것이 조금 어려워졌다.
그래서 작년에 진행 중이던 Python으로의 '이민'을 다시 재개하고자 하는데...

정말 나는 MATLAB이 너무 좋다 ㅜㅜ
Python은 코드에 너무 쓰잘데기 없는 군더더기가 많음 ㅜㅜ
뭐 자유도 면에서 좋을 수도 있지만..
확실히 코딩하는 속도가 현저히 느려지는듯

무엇보다 어제부터는 convex problem solver package인 CVXPY 하나 설치하는 데에도 너무 너무 힘들었다..
요즘 풀고자 하는 문제에 Semidefinite programming (SDP)가 있기 때문에 SDP solver가 꼭 필요 했는데 CVXPY 홈페이지에 가보니 번들 solver 중 SDP를 지원하는 solver는 SCS 밖에 없었고 그 SCS 마저도 CVXPY에서 자꾸 인식을 못함...ㅜ

<출처: cvxpy.org>

결국 하는 수 없이 MOSEK과 CVXOPT를 따로 설치했음.
MOSEK은 참고로 academic license를 받으면 쓸 수 있음. (1년 단위로 갱신 가능한듯)
그리고 아마 기본적으로 license 파일은 C:\users\"사용자 이름"\mosek 위치에 넣어야 할 것이다.
Path를 임의로 바꾸는 방법은.. 나는 못한다 ㅎㅎ (Linux를 못해서)


여튼 추후 또 다시 CVXPY를 깔아야 할 일이 생길 수 있으니 설치 순서를 여기에 간단하게 저장해놔야겠다.

- Anaconda commands for installing packages
conda install -c conda-forge lapack
conda install -c cvxgrp scs 또는 by wheel (personally recommended)
conda install -c conda-forge glpk
conda install -c conda-forge cvxopt
conda install -c conda-forge ecos 또는 by wheel (personally recommended)
osqp by wheel
cvxpy by wheel
conda install -c mosek mosek

- Anaconda commands for testing CVXPY
conda install nose
nosetests cvxpy


위에서 by wheel 이란 anaconda 창에서 conda install을 통해 package를 다운 받는 것이 아니라 직접 다운 받은 package file을
pip install 'file name.whl'
를 통해 설치하는 것을 뜻함.
이때 다운 받은 .whl 파일은 설치하고자 하는 가상 환경 (virtual environment)에 넣어주어야 하는 것 같다.
예를 들어 나의 base environment가 C:\Anaconda3이면 요기에,
virtual environment중 하나인 tf_cpu가 C:\Anaconda3\envs\tf_cpu면 요기에.
약 이틀 동안 열심히 알아본 결과 "Unofficial Windows Binaries for Python Extension Packages"이라는 사이트에서 다양한 비공식 package가 제공되는 것으로 보여진다.
주소는
https://www.lfd.uci.edu/~gohlke/pythonlibs/

그리고 SCS가 안되기 때문에 nosetests cvxpy를 실행하면 생각보다 많은 error가 날 것임.
근데 대부분의 error가 SCS 때문에 나는 것이기 때문에 굳이 SCS를 쓸 생각이 없다면 무시해도 무방하다. (~라고 CVXPY 개발자가 말함.)

현재 간단한 SDP를 MOSEK solver로 돌려보았는데 잘 되는 것 같다.
MATLAB CVX보다 조금 더 신경 쓸 것이 많아보이는데 (Python의 고질적인 dimension consistency ㅡㅡ) 당분간 계속 익숙해져야 할듯

Comments