![](/img/trans.png)
[英]how to install lpsolve module for Python on Linux Ubuntu 10.04?
[英]How to install lpsolve for python 3.6?
所以我正在創建一個帶有 python 3.6 運行時的 Docker 容器。 我需要一個用於 python 的 lp_solver ( http://lpsolve.sourceforge.net/5.5/index.htm ) 的 UX64 版本。 鏈接的是python 2.7。 我發現了以下內容: https : //github.com/chandu-atina/lp_solve_python_3x但它也不起作用。 兩種方法都試過了。 我真的不知道如何讓這個 lp_solver 在 Ubuntu Python 3.6 上工作。 是否有類似以下內容: https : //www.lfd.uci.edu/~gohlke/pythonlibs/#lp_solve但對於 Ubuntu?
還發現了這個,它有效: https ://anaconda.org/snorfalorpagus/lpsolve 但我無法導入 lpsolve。 (這是導入 lpsolve 的鏈接問題: Conda 安裝 lpsolve )
編輯 1:
以下是我采取的步驟:
mkdir -p /tmp/lp_solve && cd /tmp/lp_solve
wget -O ./lp_solve.tar.gz http://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.0/lp_solve_5.5.2.0_source.tar.gz/download
tar -xf lp_solve.tar.gz
DOWNLOAD THE REPO FROM GITHUB (https://github.com/chandu-atina/lp_solve_python_3x )
mkdir -p /tmp/lp_solve/lp_solve_5.5/extra/
//創建Python目錄! 只要確保原點是額外的/Python
cp -R extra/Python_that_is_downloaded /tmp/lp_solve/lp_solve_5.5/extra/
cd /tmp/lp_solve/lp_solve_5.5/lpsolve55
chmod a+x ccc
sh ccc
在sh ccc
我在 .h 文件中遇到了大量的語法錯誤。 這里:
user@user-box:/tmp/lp_solve/lp_solve_5.5/lpsolve55$ sh ccc
/tmp/platform.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main(){printf("ux%d", (int) (sizeof(void *)*8));}
^
In file included from ../lp_MDO.c:22:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_crash.c:21:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_lib.c:41:0:
../lp_lib.h:63:0: warning: "isnan" redefined
# define isnan(x) FALSE
^
In file included from ../lp_lib.c:27:0:
/usr/include/math.h:292:0: note: this is the location of the previous definition
# define isnan(x) __builtin_isnan (x)
^
In file included from ../lp_wlp.c:6:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_matrix.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_mipbb.c:30:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_MPS.c:5:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_params.c:6:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_presolve.c:36:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_price.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_pricePSE.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_scale.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_simplex.c:27:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_SOS.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_utils.c:4:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
ar: lp_MDO.o: No such file or directory
In file included from ../lp_MDO.c:22:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_crash.c:21:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_lib.c:41:0:
../lp_lib.h:63:0: warning: "isnan" redefined
# define isnan(x) FALSE
^
In file included from ../lp_lib.c:27:0:
/usr/include/math.h:292:0: note: this is the location of the previous definition
# define isnan(x) __builtin_isnan (x)
^
In file included from ../lp_wlp.c:6:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_matrix.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_mipbb.c:30:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_MPS.c:5:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_params.c:6:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_presolve.c:36:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_price.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_pricePSE.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_scale.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_simplex.c:27:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_SOS.c:3:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
In file included from ../lp_utils.c:4:0:
../shared/commonlib.h:88:24: error: expected identifier or ‘(’ before numeric constant
#define FALSE 0
^
cc: error: lp_MDO.o: No such file or directory
cc: error: lp_crash.o: No such file or directory
cc: error: lp_wlp.o: No such file or directory
cc: error: lp_matrix.o: No such file or directory
cc: error: lp_mipbb.o: No such file or directory
cc: error: lp_MPS.o: No such file or directory
cc: error: lp_params.o: No such file or directory
cc: error: lp_presolve.o: No such file or directory
cc: error: lp_price.o: No such file or directory
cc: error: lp_pricePSE.o: No such file or directory
cc: error: lp_scale.o: No such file or directory
cc: error: lp_simplex.o: No such file or directory
cc: error: lp_SOS.o: No such file or directory
cc: error: lp_utils.o: No such file or directory
對不起,當我附上代碼時,它給了我這里的錯誤。
我如何讓 lpsolve 在 raspbian 上使用 python 3.5.3:
從存儲庫安裝
apt-get install lp-solve # for shared object file (liblpsolve55.so)
apt-get install liblpsolve55-dev # for header files (e.g. lp_lib.h)
從 sourceforge ( https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.5/lp_solve_5.5.2.5_Python_source.tar.gz/download ) 獲取 Python 源代碼。
解壓tar文件
tar -xzf lp_solve_5.5.2.5_Python_source.tar.gz
cd lp_solve_5.5/extra/Python
通過運行開始安裝
bash build.sh
在我的例子中,源文件有一些與 python3 無關的問題。
Python3相關問題:
setup.py 差異
14c14
< print 'numpy: ' + NUMPY
---
> print('numpy: ' + NUMPY)
30c30
< ["lpsolve.c", "hash.c", "pythonmod.c"],
---
> ["lpsolve.c", "pythonmod.c"],
32c32
< include_dirs=['../..', NUMPYPATH],
---
> include_dirs=['../..', NUMPYPATH, '/usr/include/lpsolve'],
34c34
< libraries = ["lpsolve55"])
---
> libraries = ["lpsolve55", "colamd"])
pythonmod.c 差異
35a36
> static char lpsolve_name[] = "lpsolve";
43a45,48
> static PyModuleDef lpsolve_module = { .m_base = PyModuleDef_HEAD_INIT,
> .m_name = lpsolve_name,
> .m_doc = lpsolve_doc,
> .m_methods = lpsolve_methods };
47,48c52,53
< DL_EXPORT(void)
< initlpsolve55(void)
---
> PyMODINIT_FUNC
> PyInit_lpsolve55(void)
53c58
< m = Py_InitModule("lpsolve55", lpsolve_methods);
---
> m = PyModule_Create(&lpsolve_module);
85,212c90,217
< PyDict_SetItemString(d, "LE", PyInt_FromLong(LE));
...
< PyDict_SetItemString(d, "FULL", PyInt_FromLong(FULL));
---
> PyDict_SetItemString(d, "LE", PyLong_FromLong(LE));
...
> PyDict_SetItemString(d, "FULL", PyLong_FromLong(FULL));
213a219,220
>
> return m;
771c778
< (PyString_AsStringAndSize(item, &ptr, &size1) != 0) ||
---
> (PyBytes_AsStringAndSize(item, &ptr, &size1) != 0) ||
799c806
< if (PyString_Check(vector)) {
---
> if (PyUnicode_Check(vector)) {
824c831
< if ((item == NULL) || (!PyString_Check(item))) {
---
> if ((item == NULL) || (!PyUnicode_Check(item))) {
832c839
< if ((PyString_AsStringAndSize(item, &ptr, &size1) != 0) ||
---
> if ((PyBytes_AsStringAndSize(item, &ptr, &size1) != 0) ||
1028c1035
< setlhs(lpsolvecaller, element, PyString_FromString(*str));
---
> setlhs(lpsolvecaller, element, PyUnicode_FromString(*str));
1035c1042
< MyPyArray_SET_ITEM(PyObject1, i, PyString_FromString(*(str++)));
---
> MyPyArray_SET_ITEM(PyObject1, i, PyUnicode_FromString(*(str++)));
驗證安裝是否按照 lpsolve ( http://lpsolve.sourceforge.net/5.5/Python.htm#Installation ) 文檔中的指示工作
>>> from lpsolve55 import *
>>> lpsolve()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.