为Bloomberg API在python中为blpapi安装错误

时间:2018-10-19 17:47:22

标签: python bloomberg

我是Bloomberg终端用户,正在尝试通过Python使API正常工作。

我在Windows 7 64位计算机上安装了Python 3.7.0 64位,安装到:C:\Users\gp\AppData\Local\Programs\Python\Python37

我从Bloomberg API库下载了C / C ++支持的发行版(v3.8.18.1)。我将内容解压缩到C:\blp\API\cpp(我是终端用户,所以我已经拥有C:\blp\API,并添加了一个新文件夹"CPP")。

然后我按照本页面底部所述通过pip安装了Python API:API Library Support,并收到了Successfully installed blpapi-3.12.2消息。我注意到此文件已安装到C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages

然后在空闲状态下,我导入blpapi ,并出现以下错误:

Traceback (most recent call last):
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\site-packages\blpapi\internals.py", line 39, in swig_import_helper
return importlib.import_module(mname)
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 583, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 1043, in create_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed: The specified procedure could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\site-packages\blpapi\__init__.py", line 4, in <module>
from .internals import CorrelationId
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\site-packages\blpapi\internals.py", line 42, in <module>
_internals = swig_import_helper()
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\site-packages\blpapi\internals.py", line 41, in swig_import_helper
return importlib.import_module('_internals')
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_internals'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
import blpapi
  File "C:\Users\gp\AppData\Local\Programs\Python\Python37\lib\site-packages\blpapi\__init__.py", line 9, in <module>
raise debug_load_error(error)
ImportError: No module named '_internals'

Mismatch between C++ and Python SDK libraries.

Python SDK version    3.12.1
Found C++ SDK version 3.11.6.1

Download and install the latest C++ SDK from:

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

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

我在此站点上搜索了答案,并尝试了以下操作:

  • 在系统属性的“ gp用户变量”和“系统变量”中将“ path”变量设置为:C:\blp\DAPI;C:\blp\DAPI\DDE;C:\blp\API\cpp;C:\blp\API\cpp\bin(DAPI和DDE文件夹已经存在)
  • 在系统属性的“ gp用户变量”和“系统变量”中添加了C:\blp\API\cpp的'BLPAPI_ROOT'变量
  • 试图将b C:\blp\API\cpp\bin文件夹中的blpapi3_64.dll副本放入C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages中,并尝试将其放置在子文件夹“ blpapi”中,并将这些位置添加到上述路径变量中,但仍然无法正常工作。
  • 确保我已经下载了Visual Studio Build Tools 2017

还有其他想法吗?

16 个答案:

答案 0 :(得分:4)

不匹配的问题来自您需要下载SDK版本3.12的事实。当前,它对应于您可以在此处找到的“实验版本”(而不是受支持的版本!):

https://www.bloomberg.com/professional/support/api-library/

enter image description here

其他备注:

  1. 我建议您通过Bloomberg Terminal下载BloombergWindowsSDK,因为您还将获得python代码。
  2. 无需使用系统路径,您只需复制并过去ERROR: ld.so: object '/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libQt5Core.so.5' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. blpapi3_64.dll与python代码所在的文件夹相同。

答案 1 :(得分:2)

问题是您在C:\ blp \ DAPI和cpp文件夹中安装了相同的库(DLL文件)。但是,这些文件的版本不相同,这就是为什么出现错误消息的原因。一个简单的解决方法是将c:\ lib \ blpapi_cpp_3.12.2.1 \ lib文件夹中的所有库复制并粘贴到C:\ blp \ DAPI中。这样可以解决问题。

答案 2 :(得分:2)

在Windows 10上适用于Python 3.7的解决方案:

1 /从let!(:staff_user) { FactoryBot.create(:a_staff_member) } WAPI<GO>下载彭博实验性C ++ 3.12 SDK

2 /解压缩,查找lib文件夹,其中有四个文件,https://www.bloomberg.com/professional/support/api-library/blpapi3_32.dllblpapi3_32.libblpapi3_64.dll

3 /在Windows Shell中,我键入了blpapi3_64.lib,并用上面的新文件替换了所有这些位置。就我而言,至少是where blpapi3_32.dllC:\blp\DAPI(由于桌面应用程序正在使用这些文件,因此您必须先关闭Bloomberg桌面,然后再覆盖这些文件)

答案 3 :(得分:1)

正如@Malick在回答中指出的那样,目前彭博社在https://www.bloomberg.com/professional/support/api-library/上的版本存在不匹配,其中适用于python的blpapi的稳定版本需要C ++ SDK的实验版本(即{{ 1}},而不是v3.12.2.1)。这似乎与他们在终端中通过v3.8.18.1发布的内容不一致。

如果可以找到所需平台和python版本的构建,则另一个选择是使用WAPI。您可以通过conda

查看https://anaconda.org/上可用的内容
anacoda search blpapi

答案 4 :(得分:1)

检查环境路径中的文件夹。有时人们在系统路径中有两个blp文件夹,即C:\blp\DAPIC:\BloombergWindowsSDK\C++API\v3.12.3.1\lib,请确保两个文件中都有最新的blpapi3_32.dllblpapi3_64.dll

答案 5 :(得分:1)

Windows 10 / Python 3.8 / blpapi_cpp_3.14.3.1

我一整天都在努力,尝试和失败,

最后,如本次聊天和here

所述,这对我有用
  1. https://www.bloomberg.com/professional/support/api-library/ API Windows >> C / C ++实验版本(最新版本)下载C ++ BLP API,并将blpapi_cpp_3.14.3.1.zip解压缩到C:\ blp \ cpp
  2. 设置USER环境变量BLPAPI_ROOT = C:\ blp \ cpp \ lib \ environment variables 请注意,尾部的斜杠很重要(如果没有,则不能工作!)!
  3. blpapi3_32.dll blpapi3_64.dll 从C:\ blp \ cpp \ lib复制到C:\ blp \ DAPI
  4. 在壳中
  • 如果已安装,请卸载blpapi:执行 python卸载blpapi
  • 执行 python -m pip install --index-url = https://bloomberg.bintray.com/pip/simple blpapi == 3.14.0 请注意,指出与C ++版本(blpapi_cpp_3.14.3.1)的3.14.0 匹配也很重要。
  1. 在Shell中测试 执行 python -c“ import blpapi”

答案 6 :(得分:0)

您曾经解决过这个问题吗?我也有同样的问题。在Windows 10上运行。使用Anaconda。

也收到消息:

Successfully installed blpapi-3.12.2

但是在导入blpapi时:

Mismatch between C++ and Python SDK libraries.

Python SDK version    3.12.1
Found C++ SDK version 3.11.6.1

Download and install the latest C++ SDK from:

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

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

答案 7 :(得分:0)

我有完全相同的错误,并回答了我的错误消息。终于让它工作了。

  1. 已卸载blpapi和我的Bloomberg专业软件。
  2. 重新安装了最新的Bloomberg Professional
  3. 像以前一样将C ++目录拖放到C:\ blp \ api \ cpp
  4. 在conda exec中使用“ python -m pip install --index-url = https://bloomberg.bintray.com/pip/simple blpapi”安装了blpapi

以某种方式起作用。我真的很愚蠢,但松了一口气。

答案 8 :(得分:0)

实际上,该提示隐藏在错误消息的末尾,但是并不清楚。

您还需要下载Bloomberg C ++库。解压缩到一个文件夹,我们称其为c:\lib\blpapi_cpp_3.12.2.1

您需要做的是在您的c:\lib\blpapi_cpp_3.12.2.1\lib环境变量中添加PATH。重要的一点是要包含 lib 子文件夹。

这解决了我的python 3.7问题。

答案 9 :(得分:0)

我和这里的其他人一样在这些问题上挣扎。我正在使用Python 3.7运行最新的Anaconda3 5.3.1。我做了以下事情:

  1. 完全卸载anaconda(这很困难,即使尝试使用anaconda-clean,我也不得不手动进行安装)

  2. 卸载并重新安装Bloomberg

  3. 从python.org安装了python 3.6(32位)

  4. 安装了Anaconda最新版本的64位

  5. 在没有这些问题的另一台PC上找到了Bloomberg所需的软件包。但我也在这里找到它们:https://bloomberg.bintray.com/pip/simple/blpapi/

  6. 常规命令提示符:pip install c:\ YOURPATH \ blpapi-3.9.1-cp36-cp36m-win32.whl

  7. 检查是否有效-在ptyhon中导入blpapi可以正常工作,但在Jupyter nb中仍然无法正常工作

  8. 试图在anaconda提示符下安装blpapi-3.9.1-cp36-cp36m-win_amd64.whl,但这没有用。所以在Conda提示中,我确实做了conda安装pyhton = 3.6.3来从PY3.7降级到3.6.3

  9. 现在出现在conda提示符中:pip安装c:\ YOURPATH \ blpapi-3.9.1-cp36-cp36m-win_amd64.whl并已安装。

关于PATH中的环境变量的注释-除了与彭博相关的常规C:\ blp \ DAPI; C:\ blp \ DAPI \ DDE外,我什么都没有。您需要的dll已经在那里(我相信)。我对PATH所做的一件事是“ C:\ Users \ YOUR \ AppData \ Local \ Programs \ Python \ Python36-32 \ Scripts \; C:\ Users \ YOUR \ AppData \ Local \ Programs \ Python \ Python36- 32”,实际上是通过在安装python 3.6时选中“ PATH”框来完成的。

这里有许多多余或不必要的步骤。我认为最重要的一点是,彭博为您提供的最新版本的C ++文件存在一些问题-这些较旧的文件似乎可以正常工作。显然,关键是您必须降级到PY 3.6。我认为示例中的第3步到第6步如果没有前两个步骤就可以工作。

我希望这会有所帮助-既然有很多人在反复研究一堆可能的解决方案,而且似乎没有一个对所有人都有用,所以我想我会发布这个。请不要为此而撒谎-我是新来的。

答案 10 :(得分:0)

我的Python版本是3.7.1 [MSC v.1915 64位(AMD64)],Windows7 64位。

仅迁移到新PC上,并出现相同的两个错误:

“ ImportError:没有名为'_internals'的模块 C ++和Python SDK库之间不匹配。

Python SDK版本3.12.1 找到C ++ SDK版本3.11.6.1“

对我有用的与alex314159非常相似,而无需浪费时间使用PATH变量。

  1. 关闭所有应用程序。
  2. 首先从错误和原始帖子中提供的链接下载并安装最新的C ++ SDK(在我的情况下为2019年4月,为3.12.3.1)。
  3. 然后在Windowsw中使用CMD,键入“ where blpapi3_64.dll”,对我来说,它返回了“ C:\ Program Files(x86)\ blp \ DAPI”。
  4. 将Step2中的blpapi3_32.dll和blpapi3.64.dll复制到Step3中的文件夹中。
  5. 启动Jupyter笔记本,运行'import blpapi'...终于成功了!

作为旁注,我很想知道为什么原始错误是 'ModuleNotFoundError:没有名为'_internals'的模块

就像在我的站点包中打开blpapi文件夹时一样,有一个名为internals.py的模块以及一个名为_internals.cp37-win-arnd64.pyd的模块?

答案 11 :(得分:0)

对于Windows上的3.7,我必须使用3.31.1版本的C \ C ++库。它被标记为实验性的,但彭博社却允许我成功导入它。

答案 12 :(得分:0)

运行Windows 10和Python 3.7.5。

我已经按照其他人的建议在https://www.bloomberg.com/professional/support/api-library/处下载了实验版本。

尽管我尝试运行import blpapi时仍然出现错误。

我通过在我的C:\blpapi_cpp_3.13.1.1\bin环境变量中添加PATH解决了这个问题。显然,系统找不到C ++ SDK的DLL文件,并且需要该文件夹的直接路径。

答案 13 :(得分:0)

我做了两件事来解决类似的问题: 以我为例,已经安装了最新版本的C ++ SDK,问题是系统试图访问dll文件,但没有成功。

1-我将C ++ API \ lib中的.dll文件(以我的情况为blpapi3_32.dll和blpapi3_64.dll)手动复制到C:\ windows \ system32,系统使用了所有dll文件。

此外,我将C ++ API \ lib中的dll文件复制到C:\ blp \ DAPI中,将新文件替换为旧文件。

2-我安装了具有以下组件的Microsoft Visual Studio

  • C ++ / CLI支持
  • 用于桌面的VC ++ 2015.3 v14.00(v140)工具集
  • 用于x86和x64的Visual C ++ MFC
  • x86和x64的Visual C ++ ATL

第二步可能很有用,因为您可能没有C ++编译器。 您可能在计算机上安装了Microsoft Visual C ++ 14.x.x可再发行版本或任何其他版本,但与Visual Studio随附的“ VC ++ 2015.3 v14.00”不同。

答案 14 :(得分:0)

回想起来,这听起来非常愚蠢,但我一直在尝试基于此线程中先前评论的 pip 安装,而不是真正花时间阅读 Bloomberg's site。然后我尝试了

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

它立即生效。

答案 15 :(得分:0)

在这里尝试了所有方法,但对我有用的是:

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