2014-03-03 3 views
8

Я изо всех сил пытаюсь скомпилировать PyGLPK на OSX 10.8. Я установил glpk и gmp через homebrew. Я проверил, что следующие файлы все присутствующие в /USR/местные/включитьНевозможно скомпилировать pyglpk на OSX 10.8/Ubuntu 14.x

gmp.h 
gmpxx.h 
glpk.h 

Но я все еще получаю следующее сообщение об ошибке.

python setup.py build 
running build 
running build_ext 
building 'glpk' extension 
clang -fno-strict-aliasing -fno-common -dynamic -I/usr/local/include -I/usr/local/opt/sqlite/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -Isrc -I/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/glpk.c -o build/temp.macosx-10.9-x86_64-2.7/src/glpk.o -m32 
clang -fno-strict-aliasing -fno-common -dynamic -I/usr/local/include -I/usr/local/opt/sqlite/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -Isrc -I/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/lp.c -o build/temp.macosx-10.9-x86_64-2.7/src/lp.o -m32 
In file included from src/lp.c:24: 
src/kkt.h:30:3: error: unknown type name 'LPXKKT' 
    LPXKKT kkt; 
^
src/lp.c:182:18: warning: implicit declaration of function 'lpx_read_model' is invalid in C99 [-Wimplicit-function-declaration] 
     self->lp = lpx_read_model(model[0], model[1], model[2]); 
       ^
src/lp.c:182:16: warning: incompatible integer to pointer conversion assigning to 'glp_prob *' (aka 'struct glp_prob *') from 'int' [-Wint-conversion] 
     self->lp = lpx_read_model(model[0], model[1], model[2]); 
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
src/lp.c:338:7: warning: implicit declaration of function 'lpx_read_bas' is invalid in C99 [-Wimplicit-function-declaration] 
    if (lpx_read_bas(LP, bas_filename)) { 
    ^
src/lp.c:349:8: error: use of undeclared identifier 'LPX_E_OK' 
    case LPX_E_OK:  Py_RETURN_NONE; 
    ^
src/lp.c:350:8: error: use of undeclared identifier 'LPX_E_FAULT' 
    case LPX_E_FAULT:  return PyString_FromString("fault"); 
    ^
src/lp.c:351:8: error: use of undeclared identifier 'LPX_E_OBJLL' 
    case LPX_E_OBJLL:  return PyString_FromString("objll"); 
    ^
src/lp.c:352:8: error: use of undeclared identifier 'LPX_E_OBJUL' 
    case LPX_E_OBJUL:  return PyString_FromString("objul"); 
    ^
src/lp.c:353:8: error: use of undeclared identifier 'LPX_E_ITLIM' 
    case LPX_E_ITLIM:  return PyString_FromString("itlim"); 
    ^
src/lp.c:354:8: error: use of undeclared identifier 'LPX_E_TMLIM' 
    case LPX_E_TMLIM:  return PyString_FromString("tmlim"); 
    ^
src/lp.c:355:8: error: use of undeclared identifier 'LPX_E_SING' 
    case LPX_E_SING:  return PyString_FromString("sing"); 
    ^
src/lp.c:357:8: error: use of undeclared identifier 'LPX_E_NOPFS' 
    case LPX_E_NOPFS:  return PyString_FromString("nopfs"); 
    ^
src/lp.c:358:8: error: use of undeclared identifier 'LPX_E_NODFS' 
    case LPX_E_NODFS:  return PyString_FromString("nodfs"); 
    ^
src/lp.c:360:8: error: use of undeclared identifier 'LPX_E_NOFEAS' 
    case LPX_E_NOFEAS: return PyString_FromString("nofeas"); 
    ^
src/lp.c:361:8: error: use of undeclared identifier 'LPX_E_NOCONV' 
    case LPX_E_NOCONV: return PyString_FromString("noconv"); 
    ^
src/lp.c:362:8: error: use of undeclared identifier 'LPX_E_INSTAB' 
    case LPX_E_INSTAB: return PyString_FromString("instab"); 
    ^
src/lp.c:492:16: warning: implicit declaration of function 'lpx_exact' is invalid in C99 [-Wimplicit-function-declaration] 
    int retval = lpx_exact(LP); 
      ^
src/lp.c:493:15: error: use of undeclared identifier 'LPX_E_FAULT' 
    if (retval!=LPX_E_FAULT) self->last_solver = 0; 
      ^
src/lp.c:498:16: warning: implicit declaration of function 'lpx_interior' is invalid in C99 [-Wimplicit-function-declaration] 
    int retval = lpx_interior(LP); 
      ^
src/lp.c:499:15: error: use of undeclared identifier 'LPX_E_FAULT' 
    if (retval!=LPX_E_FAULT) self->last_solver = 1; 
      ^
src/lp.c:708:16: warning: implicit declaration of function 'lpx_intopt' is invalid in C99 [-Wimplicit-function-declaration] 
    int retval = lpx_intopt(LP); 
      ^
src/lp.c:709:15: error: use of undeclared identifier 'LPX_E_FAULT' 
    if (retval!=LPX_E_FAULT) self->last_solver = 2; 
      ^
src/lp.c:730:3: warning: implicit declaration of function 'lpx_check_kkt' is invalid in C99 [-Wimplicit-function-declaration] 
    lpx_check_kkt(LP, scaling, &(kkt->kkt)); 
^
src/lp.c:737:3: warning: implicit declaration of function 'lpx_check_int' is invalid in C99 [-Wimplicit-function-declaration] 
    lpx_check_int(LP, &(kkt->kkt)); 
^
src/lp.c:744:26: error: unknown type name 'LPX' 
    static int(*writers[])(LPX*,const char*) = { 
         ^
src/lp.c:745:5: error: use of undeclared identifier 'lpx_write_mps'; did you mean 'glp_write_mps'? 
    lpx_write_mps, lpx_write_bas, 
    ^~~~~~~~~~~~~ 
    glp_write_mps 
/usr/local/include/glpk.h:723:5: note: 'glp_write_mps' declared here 
int glp_write_mps(glp_prob *P, int fmt, const glp_mpscp *parm, 
    ^
src/lp.c:745:20: error: use of undeclared identifier 'lpx_write_bas' 
    lpx_write_mps, lpx_write_bas, 
       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=] 
8 warnings and 20 errors generated. 
error: command 'clang' failed with exit status 1 
make: *** [all] Error 1 

Может ли кто-нибудь предложить предложение о том, как исправить это? Я попытался сыграть с путями и переменными среды, но ничего не повлияло.

+0

У меня была та же проблема, в течение нескольких недель и не нашли решения. –

+1

Возможно, pyglpk теперь отказывается? –

ответ

10

Не уверен, что это общее исправление, но оно решило мою особую потребность в GLPK. Я просто вернулся к старой версии, и это сработало.

Первый деинсталлировать новейший:

brew remove glpk 

Затем установите старую (4.39).

cd $(brew --prefix) 
git checkout a82e823 Library/Formula/glpk.rb 
brew install glpk 

Тогда это работало просто отлично:

pip install glpk 
+0

если «git checkout a82e823 ...» не работает для вас, вы можете получить файл прямо отсюда: https://raw.githubusercontent.com/Homebrew/legacy-homebrew/a82e823935e9c4092000bab57d1a6f1cae481dca/Library/Formula/glpk .rb – eshirazi

2

К сожалению, pyglpk не работает с новыми версиями GLPK. Я думаю, что последняя версия для работы была GLPK 4.47.

3

бы выложили в качестве комментария к первоначальному вопросу, но у меня недостаточно репутацию, чтобы сделать это.

Я столкнулся с той же проблемой, когда недавно обновился до Ubuntu 14.04, который поставляется с GLPK 4.52. Многие старые API устарели и больше не доступны для публики. У меня есть работа для этого здесь: https://github.com/bradfordboyle/pyglpk.

2

У меня была такая же ошибка на Ubuntu 14.10 64bit. Согласно предложению от @daniel я установил его так:

Скачать и установить это: http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz

$ ./configure 
$ make install 

Скачать и установить последнюю pymprog: http://sourceforge.net/projects/pymprog/

$ python setup.py install 

Все прошло хорошо.

EDIT1: Не забудьте установить путь динамического компоновщика соответственно

$ export LD_LIBRARY_PATH=/usr/local/lib 
Смежные вопросы