繁体   English   中英

无法安装 nlopt python 模块

[英]Cannot install nlopt python module

我正在尝试将 nlopt 安装到 macOS 10.15.5 上。 我从NLopt 文档下载了nlopt-2.6.2.tar.gz 文件,并从 nlopt-2.6.2 目录运行以下内容:

mkdir build
cd build
cmake -DNLOPT_OCTAVE=Off -DNLOPT_MATLAB=Off -DNLOPT_GUILE=Off ..
make
sudo make install

我得到了以下 output: cmake.txt

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

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

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

官方文档对使用 Python 绑定构建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 安装构建绑定。 If you need to build against custom Python installation (eg when you've installed Python 3 via Homebrew or PKG installer from https://www.python.org/downloads ), pass it via the 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标头应该已成功定位。 示例 output 片段(您可能打印了不同的路径/版本):

-- 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 ),则停止并确保配置成功,然后再继续下一步。

现在编译:

$ 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 绑定是否可导入:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM