我是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.
我搜索了这个网站上的答案并尝试了以下内容:
C:\blp\DAPI;C:\blp\DAPI\DDE;C:\blp\API\cpp;C:\blp\API\cpp\bin
(DAPI和DDE文件夹已经存在)C:\blp\API\cpp
C:\blp\API\cpp\bin
文件夹中的blpapi3_64.dll副本放入C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
,并尝试将其放在子文件夹“blpapi”中,并将这些位置添加到上面提到的路径变量中,但仍然无法正常工作。还有其他想法吗?
不匹配的问题来自于您需要下载SDK的3.12版本。目前它对应于您可以在此处找到的“实验版本”(并且不支持发布!):
https://www.bloomberg.com/professional/support/api-library/
其他评论:
我的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'的模块
在我的site-packages中打开blpapi文件夹时,有一个名为internals.py的模块以及一个名为_internals.cp37-win-arnd64.pyd的模块?
对于Windows上的3.7,我必须使用3.31.1版本的C \ C ++库。它被标记为实验但是彭博,但它允许我成功导入它。
问题是您在C:\ blp \ DAPI和cpp文件夹中安装了相同的库(DLL文件)。但是,这些文件的版本不一样,这就是出现错误消息的原因。一个简单的解决方法是将c:\ lib \ blpapi_cpp_3.12.2.1 \ lib文件夹中的所有库复制并粘贴到C:\ blp \ DAPI中。这解决了这个问题。
在Windows 10上使用Python 3.7为我工作的解决方案:
1 /从blpapi3_64.dll
或blpapi3_32.dll
下载Bloomberg实验C ++ 3.12 SDK
2 / Extract,查找lib文件夹,有四个文件,WAPI<GO>
,https://www.bloomberg.com/professional/support/api-library/
,blpapi3_32.dll
,blpapi3_32.lib
。
3 /在Windows shell中我键入了blpapi3_64.dll
并用上面的新文件替换了所有这些位置。在我的情况下,它至少是blpapi3_64.lib
和where blpapi3_32.dll
(你需要关闭Bloomberg桌面才能覆盖这些文件,因为它们被桌面应用程序使用)
正如@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/
检查环境路径中的文件夹。有时人们在系统路径中有两个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\DAPI
和C:\BloombergWindowsSDK\C++API\v3.12.3.1\lib
。
你有没有解决这个问题?我也有同样的问题。在Windows 10上运行。使用Anaconda。
还得到了消息:
blpapi3_32.dll
但是在导入blpapi时:
blpapi3_64.dll
我有完全相同的错误,并回复了我的错误消息。终于搞定了。
Successfully installed blpapi-3.12.2
blpapi”安装了blpapi不知何故,这有效。我觉得自己真的很蠢,但是松了一口气。
实际上线索隐藏在错误消息的末尾,但并不完全清楚。
您还需要下载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的问题。
我在这里像其他人一样努力解决这些问题。我使用Python 3.7运行最新的Anaconda3 5.3.1。我做了以下事情:
c:\lib\blpapi_cpp_3.12.2.1\lib
关于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可以在没有前两个的情况下工作。
我希望这会有所帮助 - 因为有很多人在迭代一堆可能的解决方案而没有一个似乎适用于所有人,我想我会发布这个。请不要因为我 - 我是新来的。