为bloomberg API在python中安装blpapi错误

问题描述 投票:5回答:11

我是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

在Idle我然后导入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”和“系统变量”中的“路径”变量设置为:C:\blp\DAPI;C:\blp\DAPI\DDE;C:\blp\API\cpp;C:\blp\API\cpp\bin(DAPI和DDE文件夹已经存在)
  • 在系统属性的“用户变量gp”和“系统变量”中添加了一个'BLPAPI_ROOT'变量:C:\blp\API\cpp
  • 尝试将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

还有其他想法吗?

python bloomberg
11个回答
5
投票

不匹配的问题来自于您需要下载SDK的3.12版本。目前它对应于您可以在此处找到的“实验版本”(并且不支持发布!):

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

enter image description here

其他评论:

  1. 我建议你通过彭博终端下载BloombergWindowsSDK因为你也会得到python代码。
  2. 无需使用系统路径,您可以将qazxsw poi qazxsw poi复制并粘贴到与您的python代码所在的文件夹相同的文件夹中。

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(在我的例子中,April2019,它是3.12.3.1)。
  3. 然后在Windowsw中使用CMD,键入'where blpapi3_64.dll',对我来说它返回“C:\ Program Files(x86)\ blp \ DAPI”。
  4. 将步骤2中的blpapi3_32.dll和blpapi3.64.dll复制到Step3中的文件夹中。
  5. 启动Jupyter Notebook,运行'import blpapi'......最后它运行了!

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

在我的site-packages中打开blpapi文件夹时,有一个名为internals.py的模块以及一个名为_internals.cp37-win-arnd64.pyd的模块?


0
投票

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


3
投票

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


2
投票

在Windows 10上使用Python 3.7为我工作的解决方案:

1 /从blpapi3_64.dllblpapi3_32.dll下载Bloomberg实验C ++ 3.12 SDK

2 / Extract,查找lib文件夹,有四个文件,WAPI<GO>https://www.bloomberg.com/professional/support/api-library/blpapi3_32.dllblpapi3_32.lib

3 /在Windows shell中我键入了blpapi3_64.dll并用上面的新文件替换了所有这些位置。在我的情况下,它至少是blpapi3_64.libwhere blpapi3_32.dll(你需要关闭Bloomberg桌面才能覆盖这些文件,因为它们被桌面应用程序使用)


1
投票

正如@Malick在他的回答中指出的那样,目前Bloomberg在C:\blp\DAPI上的版本不匹配,其中用于python的C:\Users\MyName\AppData\Local\Continuum\anaconda3\Library\bin\blpapi3_32.dll的稳定版本需要C ++ SDK的实验版本(即https://www.bloomberg.com/professional/support/api-library/而不是blpapi)。这似乎与他们通过终端中的v3.12.2.1发布的内容不一致。

另一种选择,如果您可以找到所需平台和python版本的构建,则使用v3.8.18.1。您可以通过WAPI查看conda上的可用内容

https://anaconda.org/

1
投票

检查环境路径中的文件夹。有时人们在系统路径中有两个anacoda search blpapi文件夹,即$ anaconda search blpapi Using Anaconda API: https://api.anaconda.org Packages: Name | Version | Package Types | Platforms | Builds ------------------------- | ------ | --------------- | --------------- | ---------- conda-forge/blpapi | 3.9.2 | conda | linux-64, win-64, osx-64 | py36he980bc4_0, py36_blpapicpp3.8.18.1_1, py36_blpapicpp3.8.1.1_1, py27h2d50403_0, py27_blpapicpp3.8.18.1_1, py27hdc96acc_0, py36h2d50403_0, py27_blpapicpp3.8.1.1_1 : Python SDK for Bloomberg BLPAPI (<=3.9) dsm/blpapi | 3.9.0 | conda | linux-64, win-64 | py36_0, py27_0 josh/blpapi | 3.5.5 | conda | linux-64 | py27_0 macinv/blpapi | 3.9.0 | conda | linux-64, win-64 | py36_0, py27_0, py35_0, py34_0 mbonix/blpapi | 3.9.0 | conda | win-64 | py36_0 : Bloomberg's Open Market Data Initiative is part of the company's ongoing effort to foster open solutions for the financial services industry. p-vg/blpapi | 3.9.2 | conda | linux-64, win-64 | py36h6538335_0, py27hc56fc5f_0, py36hf484d3e_0, py27hf484d3e_0 : interface for Bloomberg API services using the Python programming language Found 6 packages Run 'anaconda show <USER/PACKAGE>' to get installation details blp,确保你在两个文件中都有最新的C:\blp\DAPIC:\BloombergWindowsSDK\C++API\v3.12.3.1\lib


0
投票

你有没有解决这个问题?我也有同样的问题。在Windows 10上运行。使用Anaconda。

还得到了消息:

blpapi3_32.dll

但是在导入blpapi时:

blpapi3_64.dll

0
投票

我有完全相同的错误,并回复了我的错误消息。终于搞定了。

  1. 卸载了blpapi和我的Bloomberg专业软件。
  2. 重新安装了最新的彭博专业人士
  3. 像以前一样将C ++目录放到C:\ blp \ api \ cpp中
  4. 在我的conda exec中使用“python -m pip install --index-url = Successfully installed blpapi-3.12.2 blpapi”安装了blpapi

不知何故,这有效。我觉得自己真的很蠢,但是松了一口气。


0
投票

实际上线索隐藏在错误消息的末尾,但并不完全清楚。

您还需要下载Bloomberg C ++库。解压缩到一个文件夹,我们称之为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.

你需要做的是将https://bloomberg.bintray.com/pip/simple添加到你的c:\lib\blpapi_cpp_3.12.2.1环境变量中。重要的一点是包含lib子文件夹。

这解决了python 3.7的问题。


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所需的软件包。但我也在这里找到了他们:c:\lib\blpapi_cpp_3.12.2.1\lib
  6. 常规命令提示符:pip install c:\ YOURPATH \ blpapi-3.9.1-cp36-cp36m-win32.whl
  7. 检查它是否有效 - 在python中导入blpapi工作但它仍然无法在Jupyter中运行
  8. 试图在anaconda提示符下安装blpapi-3.9.1-cp36-cp36m-win_amd64.whl,但是没有用。所以在Conda提示符中我做了conda install pyhton = 3.6.3从PY3.7降级到3.6.3
  9. 现在在conda提示符:pip install c:\ YOURPATH \ blpapi-3.9.1-cp36-cp36m-win_amd64.whl和那个安装。

关于PATH中环境变量的注释 - 除了通常的C:\ blp \ DAPI; C:\ blp \ DAPI \ DDE与Bloomberg相关之外别无其他。你需要的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框来完成的。

这里有许多冗余或不必要的步骤。我认为最重要的一点是,Bloomberg为您提供了最新版本的C ++文件存在一些问题 - 这些较旧的文件似乎有效。关键是显然你必须降级到PY 3.6。我认为我的例子中的步骤3-6可以在没有前两个的情况下工作。

我希望这会有所帮助 - 因为有很多人在迭代一堆可能的解决方案而没有一个似乎适用于所有人,我想我会发布这个。请不要因为我 - 我是新来的。

© www.soinside.com 2019 - 2024. All rights reserved.