我是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.
我在此站点上搜索了答案,并尝试了以下操作:
C:\blp\DAPI;C:\blp\DAPI\DDE;C:\blp\API\cpp;C:\blp\API\cpp\bin
(DAPI和DDE文件夹已经存在)C:\blp\API\cpp
的'BLPAPI_ROOT'变量C:\blp\API\cpp\bin
文件夹中的blpapi3_64.dll副本放入C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
中,并尝试将其放置在子文件夹“ blpapi”中,并将这些位置添加到上述路径变量中,但仍然无法正常工作。 还有其他想法吗?
答案 0 :(得分:4)
不匹配的问题来自您需要下载SDK版本3.12的事实。当前,它对应于您可以在此处找到的“实验版本”(而不是受支持的版本!):
https://www.bloomberg.com/professional/support/api-library/
其他备注:
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.dll
,blpapi3_32.lib
,blpapi3_64.dll
。
3 /在Windows Shell中,我键入了blpapi3_64.lib
,并用上面的新文件替换了所有这些位置。就我而言,至少是where blpapi3_32.dll
和C:\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
anacoda search blpapi
答案 4 :(得分:1)
检查环境路径中的文件夹。有时人们在系统路径中有两个blp
文件夹,即C:\blp\DAPI
和C:\BloombergWindowsSDK\C++API\v3.12.3.1\lib
,请确保两个文件中都有最新的blpapi3_32.dll
和blpapi3_64.dll
。>
答案 5 :(得分:1)
Windows 10 / Python 3.8 / blpapi_cpp_3.14.3.1
我一整天都在努力,尝试和失败,
最后,如本次聊天和here
所述,这对我有用答案 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)
我有完全相同的错误,并回答了我的错误消息。终于让它工作了。
以某种方式起作用。我真的很愚蠢,但松了一口气。
答案 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。我做了以下事情:
完全卸载anaconda(这很困难,即使尝试使用anaconda-clean,我也不得不手动进行安装)
卸载并重新安装Bloomberg
从python.org安装了python 3.6(32位)
安装了Anaconda最新版本的64位
在没有这些问题的另一台PC上找到了Bloomberg所需的软件包。但我也在这里找到它们:https://bloomberg.bintray.com/pip/simple/blpapi/
常规命令提示符:pip install c:\ YOURPATH \ blpapi-3.9.1-cp36-cp36m-win32.whl
检查是否有效-在ptyhon中导入blpapi可以正常工作,但在Jupyter nb中仍然无法正常工作
试图在anaconda提示符下安装blpapi-3.9.1-cp36-cp36m-win_amd64.whl,但这没有用。所以在Conda提示中,我确实做了conda安装pyhton = 3.6.3来从PY3.7降级到3.6.3
现在出现在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变量。
作为旁注,我很想知道为什么原始错误是 '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 ++编译器。 您可能在计算机上安装了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/