Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pip install with specific compiler

When I do pip install in my cluster (my cluster is designed to use intel compiler icpc), I get the following error:

$ pip install cvxopt --user
Collecting cvxopt
  Using cached cvxopt-1.1.8.tar.gz
Building wheels for collected packages: cvxopt
  Running setup.py bdist_wheel for cvxopt ... error
  Complete output from command /share/apps/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-sxngrO/cvxopt/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmpTcH01Zpip-wheel- --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/coneprog.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/printing.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/msk.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/misc.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/__init__.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/cvxprog.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/info.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/modeling.py -> build/lib.linux-x86_64-2.7/cvxopt
  copying src/python/solvers.py -> build/lib.linux-x86_64-2.7/cvxopt
  running build_ext
  building 'base' extension
  creating build/temp.linux-x86_64-2.7
  creating build/temp.linux-x86_64-2.7/src
  creating build/temp.linux-x86_64-2.7/src/C
  gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/share/apps/include/python2.7 -c src/C/base.c -o build/temp.linux-x86_64-2.7/src/C/base.o
  gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/share/apps/include/python2.7 -c src/C/dense.c -o build/temp.linux-x86_64-2.7/src/C/dense.o
  gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/share/apps/include/python2.7 -c src/C/sparse.c -o build/temp.linux-x86_64-2.7/src/C/sparse.o
  gcc -pthread -shared build/temp.linux-x86_64-2.7/src/C/base.o build/temp.linux-x86_64-2.7/src/C/dense.o build/temp.linux-x86_64-2.7/src/C/sparse.o -L/usr/lib -lm -llapack -lblas -o build/lib.linux-x86_64-2.7/cvxopt/base.so
  /usr/bin/ld: cannot find -llapack
  collect2: ld returned 1 exit status
  error: command 'gcc' failed with exit status 1

I think there might be 2 problems:

  1. it uses gcc rather than icpc which is what our cluster is set up for... So the question is that is it possible to specify icpc for all my installations?

  2. /usr/bin/ld: cannot find -llapack: lapack library is not found ... Lapack library is missing ... As I do not want to install from source, is there some way that I could use package manager to install all those dependencies? Thank you.

like image 586
Vacassal Alsk Avatar asked Oct 30 '25 07:10

Vacassal Alsk


1 Answers

You can configure the compiler for one installation with pip in the following way:

pip install --global-option build_ext --global-option --compiler=<compiler_name> <package_name>

just remember to swap <compiler_name> to the name of your compiler (icpc) and <package_name> to cvxopt

Please see this answer for a similar approach on Windows.

like image 89
sophros Avatar answered Nov 01 '25 20:11

sophros