安装彭博Python API 时出现 _versionhelper ImportError错误

3
我正在尝试使用Bloomberg Python API。我一直在按照这个教程进行操作。我可以成功地运行python -m pip install — index-url=https://bloomberg.bintray.com/pip/simple blpapi,但是当我尝试在Python解释器中运行import blpapi时,会出现以下错误。我该如何解决这个错误(是否与我使用的Python 3.8有关)?
ImportError:
---------------------------- ENVIRONMENT -----------------------------
Platform: Windows-10-10.0.17763-SP0
Architecture: ('32bit', 'WindowsPE')
Python: 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)]
Python implementation: CPython

blpapi 64-bit will be loaded from: "C:\blp\API\blpapi_cpp_3.13.1.1\lib\blpapi3_64.dll"
blpapi 32-bit will be loaded from: "C:\blp\API\blpapi_cpp_3.13.1.1\lib\blpapi3_32.dll"
System PATH: (* marks locations where blpapi was found)
    "C:\Windows\system32"
    "C:\Windows"
    "C:\Windows\System32\Wbem"
    "C:\Windows\System32\WindowsPowerShell\v1.0\"
    "C:\Windows\System32\OpenSSH\"
    "C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL"
    "C:\Program Files\Intel\Intel(R) Management Engine Components\DAL"
    "c:\nx_dll"
    "C:\Program Files\nodejs\"
  * "C:\blp\API\blpapi_cpp_3.13.1.1\lib"
    "C:\Program Files\MiKTeX 2.9\miktex\bin\x64\"
    "C:\Users\cpage\AppData\Local\Programs\Python\Python38-32\Scripts\"
    "C:\Users\cpage\AppData\Local\Programs\Python\Python38-32\"
    "C:\Users\cpage\AppData\Local\Microsoft\WindowsApps"
  * "C:\blp\DAPI"
    "C:\blp\DAPI\DDE"
    "C:\Users\cpage\AppData\Roaming\npm"
    "C:\Program Files\Sublime Text 3"
    "C:\Users\cpage\AppData\Local\hyper\app-3.0.2\resources\bin"
    "C:\Users\cpage\AppData\Local\Programs\Microsoft VS Code\bin"
  * "C:\blp\API\blpapi_cpp_3.13.1.1\lib"

blpapi package at: "C:\Users\cpage\AppData\Local\Programs\Python\Python38-32\lib\site-packages"

Current directory: "C:\Users\cpage"

----------------------------------------------------------------------
No module named '_versionhelper'

Could not open the C++ SDK library.

Download and install the latest C++ SDK from:

    http://www.bloomberg.com/professional/api-library

If the C++ SDK is already installed, please ensure that the path to the library
was added to PATH before entering the interpreter.

有几个类似的问题:https://stackoverflow.com/search?q=%5Bbloomberg%5D+%22Could+not+open+the+C%2B%2B+SDK+library%22 其中一个提到创建一个环境变量:BLPAPI_ROOT - assylias
是的,我已经将 BLPAPI_ROOT 设置为 C:\blp\API\blpapi_cpp_3.13.1.1\ - cpage
在Python 3.8和blpapi_cpp_3.14.3.1上遇到了同样的问题。 - gt6989b
1
@gt6989b,新版本支持3.8,试试看吧。 - raphaeldavidf
@raphaeldavidf 对我们来说太晚了 :) 我们从2.7迁移到3.7,因为这个问题和其他一些问题。我猜3.8太新了。 - gt6989b
显示剩余2条评论
3个回答

3

您需要下载与您的C++库版本相匹配的Python blpapi包。

在您的情况下,因为您的C++库是3.13.1.1版本,您可以下载3.13.1版本的Python包:

pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi==3.13.1


2

我刚才成功使用版本为blpapi-3.15.2的C++ API blpapi_cpp_3.15.0.1运行了它。

安装方法如下:

python -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi

导入使用:

import os
with os.add_dll_directory('<...>\blpapi_cpp_3.15.0.1\lib'):
    import blpapi

或者将'<...>\blpapi_cpp_3.15.0.1\lib'添加到 PATH 环境变量中


1
下面的步骤适用于CPython 2.7和3.7。一位Bloomberg代表声称他也验证了它适用于CPython 3.5:
  1. 官方Bloomberg仓库下载C++ BLP API。如果此链接失效,请使用Bloomberg API支持主页查找最新的链接。
  2. 将存档解压缩到C:\Programs\blpapi_cpp_3.14.3.1
  3. 退出shell。
  4. 设置环境变量BLPAPI_ROOT=C:\Programs\blpapi_cpp_3.14.3.1\。注意斜线后面的尾随符号很重要。
  5. 启动一个新的shell。
  6. 执行python -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi==3.14.0
  7. 通过执行python -c "import blpapi"检查安装情况,如果没有显示消息则表示成功。

我每年都会遇到这个问题,每次都需要搜索解决方案。由于我已经拥有了所有正确的版本,所以我只需按照步骤4中的添加尾随斜杠并将blpapi3_32.dllblpapi3_64.dll复制到_C:\blp\DAPI_文件夹即可。不需要重新安装或下载任何内容。可能终端中DAPI文件夹中的.dll自动更新为旧版本,导致出现问题。 - gregV
@Vrun 这个方案说得通,而且确实可行,但是对我来说有点折中。此外,你会面临Bloomberg Terminal软件发布不兼容的风险,导致Terminal无法工作。 - gt6989b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接