1

我正在使用 Python 制作一个脚本来处理我的博士学位中的一些化学结构。我想为 python 安装 openbabel 库。我尽力了,但我无法安装它。它总是给出错误: Error: SWIG failed. Is Open Babel installed? 这是我 PC 上的 Python 路径:C:\Users\malih\AppData\Local\Programs\Python\Python36-32. Openbabel 安装在以下路径C:\Program Files (x86)\OpenBabel-2.3.1

当我运行时python -m pip install openbabel,它给出了以下错误:

C:\Users\malih>python -m pip install openbabel
Collecting openbabel
Using cached openbabel-2.4.1.tar.gz
Installing collected packages: openbabel
Running setup.py install for openbabel ... error
Complete output from command C:\Users\malih\AppData\Local\Programs\Python\Python36-32\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\malih\\AppData\\Local\\Temp\\pip-build-glr82a7x\\openbabel\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\malih\AppData\Local\Temp\pip-02z3p_a9-record\install-record.txt --single-version-externally-managed --compile:
running install
running build_ext
Warning: pkg-config could not be found.
Guessing Open Babel location:
- include_dirs: ['C:\\Users\\malih\\AppData\\Local\\Programs\\Python\\Python36-32\\include', 'C:\\Users\\malih\\AppData\\Local\\Programs\\Python\\Python36-32\\include', '/usr/local/include/openbabel-2.0']
- library_dirs: ['C:\\Users\\malih\\AppData\\Local\\Programs\\Python\\Python36-32\\libs', 'C:\\Users\\malih\\AppData\\Local\\Programs\\Python\\Python36-32\\PCbuild\\win32', '/usr/local/lib']
building '_openbabel' extension
swigging openbabel-python.i to openbabel-python_wrap.cpp
swig.exe -python -c++ -small -O -templatereduce -naturalvar -IC:\Users\malih\AppData\Local\Programs\Python\Python36-32\include -IC:\Users\malih\AppData\Local\Programs\Python\Python36-32\include -I/usr/local/include/openbabel-2.0 -o openbabel-python_wrap.cpp openbabel-python.i

Error: SWIG failed. Is Open Babel installed?
You may need to manually specify the location of Open Babel include and library directories. For example:
  python setup.py build_ext -I/usr/local/include/openbabel-2.0 -L/usr/local/lib
  python setup.py install

----------------------------------------
Command "C:\Users\malih\AppData\Local\Programs\Python\Python36-32\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\malih\\AppData\\Local\\Temp\\pip-build-glr82a7x\\openbabel\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\malih\AppData\Local\Temp\pip-02z3p_a9-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\malih\AppData\Local\Temp\pip-build-glr82a7x\openbabel\

我尝试按照此页面上的说明进行操作,但它们纯粹是针对 linux 的,我无法针对 Windows 进行跟进: 如何在 Travis CI 中使用 python-openbabel?

我还尝试从以下指南安装 pkg-config,但即使在此之后,它也会给出相同的错误: 如何在 Windows 中安装 pkg config?

请帮助我,因为我的工作是基于此的,我被困在这一点上。在此先感谢您的时间。

4

2 回答 2

4

pip install众所周知,它对 Windows 不友好。要么去openbabel官网下载+安装windows二进制文件,然后下载+安装python绑定,或者使用非官方官方openbabel python windows build,然后cd进入下载目录,执行pip install OPENBABEL_FILE_WINDOWS.whl

我最近在 2D mol 文件 -> 3D mol 文件使用 openbabel 翻译上做了一些相当多的工作。让我知道它是如何为你工作的。

--

编辑:我还应该补充一点,python3.x 与 python2.x 截然不同。因此,如果有任何问题,请尝试使用 python2.x

于 2017-02-10T04:30:55.183 回答
0

这有点旧,但问题仍然存在,所以我还是会回答。

预编译的 Windows 二进制文件(很可能)没有内置 SWIG,它又不提供语言绑定,并且在从 pip 安装时会出现错误。一种解决方法是从非官方的 Windows 二进制文件网站安装一个轮子,就像pandamakes回答的那样。

然而,轮子已经捆绑了一个预编译的 obabel,所以你真的不需要安装 windows 二进制版本(安装程序附带的那个),但你必须知道,如果你愿意发货一个使用这个库的 python 脚本,知道它会干扰环境变量中的系统,要解决这个问题,你必须在脚本文件夹中BABEL_DIR包含整个 openbabel 目录。YourPythonDirectory/lib/site-packages/.

另一个重要的注意事项是,从非官方二进制网站构建的一些 babel 版本存在一个错误,即它们无法检测所有文件格式,尤其是最常见的文件格式,如 sdf/pdb/mol2 甚至微笑。到目前为止,我确认的唯一工作有点完美的版本是openbabel‑3.1.1‑cp36‑cp36m‑win32.whland openbabel‑3.1.1‑cp38‑cp38‑win32.whl.

于 2022-03-01T10:43:58.473 回答