索引器错误:“import pybel”上的“列表索引超出范围”

2024-04-30 00:48:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个web应用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

有什么帮助吗?在


Tags: installinpyhomevenvlibpackagesline
1条回答
网友
1楼 · 发布于 2024-04-30 00:48:53

正如@Manu mathew所说,this is a bug,但不是在Python的openbabel包中,而是在它包装的openbabelC库中(由openbabelapt包提供)。在

这个bug在版本openbabel/2.3.2+dfsg-3中得到了修复,对于你的ubuntuxenial(从Python版本来看)is not available。在

所以你需要升级你的发行版。修复程序是可用的since Bionic,但为了获得最佳结果,请升级到最新的发行版(请参见下面的解释)。在


除此之外

  • 安装python-openbabelapt包是无用的,因为it's for Python 2。python3的包名为“python3-openbabel”,但是there's no such package。所以您必须从PyPI安装绑定。在
  • 使用apt-get全局安装Python包,使用pip将Python包安装到venv中是多余的。
    • 如果您使用的是旧发行版,那么当您将一个新的绑定包从PyPI链接到系统上的旧C库时,您也可能会受到破坏。如果bindings包是针对您的本地库构建的,它很可能是为了支持这个版本,但是谁知道这个组合测试了多少。
  • 因此,通常情况下,您应该更喜欢包装本地C库的Python包的apt-get版本,如果有可用的if you are using the system Python。通过使用^{}创建,可以使全局安装的包在venv中可用。在

{Py7>的绑定没有可用的。在这种情况下,最好使用与绑定版本相对应的C库版本,也就是说,可能是最新的版本,因为这种组合显然经过了广泛的测试。在

相关问题 更多 >