我正在使用django网络应用程序,当我安装openbabel并尝试导入pybel时出现错误
我使用的venv
在执行所有这些命令时均已激活
我这样安装openbabel:
sudo apt-get install python-openbabel
我也尝试过:
sudo apt-get install openbabel libopenbabel-dev swig
然后我做了:
pip install openbabel
在那之后,我尝试导入pybel(在导入openbabel之后)
这是实际结果:
>>> import pybel
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/etudiant/QuChemPedIA/QuChemPedIAProject/venv/lib/python3.5/site-packages/pybel.py", line 94, in <module>
descs = _getpluginnames("descriptors")
File "/home/etudiant/QuChemPedIA/QuChemPedIAProject/venv/lib/python3.5/site-packages/pybel.py", line 84, in _getpluginnames
return [x.split()[0] for x in plugins]
File "/home/etudiant/QuChemPedIA/QuChemPedIAProject/venv/lib/python3.5/site-packages/pybel.py", line 84, in <listcomp>
return [x.split()[0] for x in plugins]
IndexError: list index out of range
请帮忙吗?
答案 0 :(得分:0)
正如@Manu mathew所说,this is a bug,但不在Python的openbabel
包中,而是在它包装的openbabel
C库中(由apt包openbabel
提供) )。
该错误已在版本openbabel/2.3.2+dfsg-3
中修复,该错误适用于您的Ubuntu Xenial(根据您的Python版本判断)is not available。
因此您需要升级发行版。该修复程序可用since Bionic进行,但是为了获得最佳效果,请升级到最新的发行版(有关说明,请参见下文)。
除此之外,
python-openbabel
apt软件包毫无用处,因为it's for Python 2。 Python 3的软件包将称为“ python3-openbabel
”,但称为there's no such package。因此,您必须从PyPI安装绑定。apt-get
全局安装Python软件包,并通过pip
将python软件包安装到venv是多余的。
apt-get
版本的Python软件包应封装一个本地C库(如果有一个if you are using the system Python可用)。通过使用--system-site-packages
创建,可以在venv中使全局安装的软件包可用。但是由于在这种情况下,没有apt-get
版本的绑定可用,因此您必须从PyPI安装绑定。在这种情况下,最好具有与绑定版本相对应的C库版本(即可能是最新版本),因为显然已经对该组合进行了广泛的测试。