python - 无法安装 nlopt python 模块

标签 python macos nlopt

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

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 克隆,但也没成功。

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

最佳答案

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

$ brew install swig

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

现在运行cmake:

$ cmake -DNLOPT_GUILE=OFF -DNLOPT_MATLAB=OFF -DNLOPT_OCTAVE=OFF -DNLOPT_TESTS=OFF

这将针对 MacOS 上预安装的默认 Python 2.7 安装构建绑定(bind)。如果您需要针对自定义 Python 安装进行构建(例如,当您通过 Homebrew 或 https://www.python.org/downloads 中的 PKG 安装程序安装了 Python 3 时),请通过 PYTHON_EXECUTABLE arg 传递它:

$ cmake -DNLOPT_GUILE=OFF -DNLOPT_MATLAB=OFF -DNLOPT_OCTAVE=OFF -DNLOPT_TESTS=OFF -DPYTHON_EXECUTABLE=/usr/local/bin/python3

立即检查日志 - Python、SWIG 和 numpy header 应该已成功找到。示例输出片段(您可能打印了不同的路径/版本):

-- 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")

如果不满足任何这些条件(例如,您看到无法找到 NumPy无法找到 PythonLibs无法找到 SWIG ),然后停止并确保配置成功,然后再继续下一步。

现在编译:

$ 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

安装:

$ make install
...
-- Installing: /usr/local/lib/python3.8/site-packages/nlopt.py
-- Installing: /usr/local/lib/python3.8/site-packages/_nlopt.so

测试 Python 绑定(bind)是否可导入:

$ python -c "import nlopt; print(nlopt.__version__)"
2.6.2

关于python - 无法安装 nlopt python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62704802/

相关文章:

amazon-web-services - "Python"中的欧拉计划#2

python - Celery 为每个失败的任务发送邮件

swift - 禁用应用程序包中的右键单击

c++ - 停止并恢复优化

C++ : NLopt COBYLA as compared to Matlab fmincon

c++ - 我可以在 nlopt 中表示染色体吗?

python - Docker Node :8. 16.0-alpine 错误:未找到:python2

python - 将 NumPy 数组转换为列向量

macos - OS X Firemonkey 应用程序中的 TClientDataset

macos - 在 Mac OS X 中使用命令行杀死 "loginwindow"进程