首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法安装nlopt python模块

无法安装nlopt python模块
EN

Stack Overflow用户
提问于 2020-07-03 04:48:59
回答 1查看 232关注 0票数 2

我正在尝试在macOS 10.15.5上安装nlopt。我从NLopt docs下载了nlopt-2.6.2.tar.gz file,并从nlopt-2.6.2目录运行以下命令:

代码语言:javascript
复制
mkdir build
cd build
cmake -DNLOPT_OCTAVE=Off -DNLOPT_MATLAB=Off -DNLOPT_GUILE=Off ..
make
sudo make install

我得到了以下输出:cmake.txt

头文件(nlopt.h)正确安装到/usr/local/include,动态库(libnlopt.dylib)正确安装到/usr/local/lib/,但是dist-info文件和nlopt模块本身都没有安装。

我也尝试过通过pip、brew和conda进行安装,但都没有成功。我也尝试过从这个Github中克隆,但也不起作用。

我很感谢大家的帮助,因为我完全迷失了方向。我对这类东西比较陌生,在网上找不到任何好的答案。

EN

回答 1

Stack Overflow用户

发布于 2020-07-04 00:25:03

官方文档对使用Python绑定构建nlopt所需的确切步骤有些简洁。首先,你需要安装SWIG:

代码语言:javascript
复制
$ brew install swig

然后,您将需要numpy可用于目标Python解释器。它已经为system Python预先安装,或者通过Homebrew或pip安装,具体取决于您的Python安装。

现在运行cmake

代码语言:javascript
复制
$ cmake -DNLOPT_GUILE=OFF -DNLOPT_MATLAB=OFF -DNLOPT_OCTAVE=OFF -DNLOPT_TESTS=OFF

这将针对MacOS上预装的默认Python2.7安装构建绑定。如果您需要基于自定义Python安装进行构建(例如,当您通过Homebrew或来自https://www.python.org/downloads的PKG安装程序安装Python3时),请通过PYTHON_EXECUTABLE arg:

代码语言:javascript
复制
$ cmake -DNLOPT_GUILE=OFF -DNLOPT_MATLAB=OFF -DNLOPT_OCTAVE=OFF -DNLOPT_TESTS=OFF -DPYTHON_EXECUTABLE=/usr/local/bin/python3

现在检查日志- Python、SWIG和numpy标头应该被成功定位。示例输出片段(您可能打印了不同的路径/版本):

代码语言:javascript
复制
-- Found PythonInterp: /usr/local/bin/python3.8 (found version "3.8.3")
-- Found PythonLibs: /Library/Frameworks/Python.framework/Versions/3.8/lib/libpython3.8.dylib (found suitable exact version "3.8.3")
-- Found NumPy: /Users/hoefling/Library/Python/3.8/lib/python/site-packages/numpy/core/include (found version "1.19")
-- Found SWIG: /usr/local/bin/swig (found version "4.0.2")

如果不满足这些条件中的任何一个(例如,您看到Could NOT find NumPyCould NOT find PythonLibsCould NOT find SWIG),则停止并确保配置成功,然后再继续下一步。

现在编译:

代码语言:javascript
复制
$ make
...
Scanning dependencies of target nlopt_python_swig_compilation
[ 96%] Swig compile nlopt.i for python
[ 96%] Built target nlopt_python_swig_compilation
Scanning dependencies of target nlopt_python
[ 98%] Building CXX object src/swig/CMakeFiles/nlopt_python.dir/CMakeFiles/nlopt_python.dir/nloptPYTHON_wrap.cxx.o
[100%] Linking CXX shared module _nlopt.so
[100%] Built target nlopt_python

安装:

代码语言:javascript
复制
$ make install
...
-- Installing: /usr/local/lib/python3.8/site-packages/nlopt.py
-- Installing: /usr/local/lib/python3.8/site-packages/_nlopt.so

测试Python绑定是可导入的:

代码语言:javascript
复制
$ python -c "import nlopt; print(nlopt.__version__)"
2.6.2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62704802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档