I am a Bloomberg terminal user and am trying to get the API to work via Python.
I have Python 3.7.0 64-bit on my Windows 7 64-bit computer installed to: C:\Users\gp\AppData\Local\Programs\Python\Python37
I downloaded the C/C++ Supported Release (v3.8.18.1) from the Bloomberg API Library. I unzipped contents to C:\blp\API\cpp
(I am a terminal user so I already had C:\blp\API
and I added a new folder "CPP"
).
I then installed the Python API through pip as stated at the bottom of this page: API Library Support and received a Successfully installed blpapi-3.12.2
message. I noticed this got installed to C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
In Idle I then import blpapi and I get the following errors:
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.
I searched through answers on this site and attempted the following:
C:\blp\DAPI;C:\blp\DAPI\DDE;C:\blp\API\cpp;C:\blp\API\cpp\bin
(DAPI and DDE folders were already there)C:\blp\API\cpp
in the "User variables for gp" and "system variables" in system properties C:\blp\API\cpp\bin
folder into C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
and tried placing it in subfolder "blpapi" and added those locations to the path variable mentioned above and it still did not work. Any other ideas?
The problem of mismatch comes from the fact that you need to download version 3.12 of the SDK. Currently it corresponds to the "Experimental release" (and not Supported release !) that you can find here:
https://www.bloomberg.com/professional/support/api-library/
Other remarks:
blpapi3_64.dll
blpapi3_32.dll
to the same folder as the one where your python code is located. Actually the clue is hidden at the end of the error message, but it wasn't entirely clear.
You need to download the Bloomberg C++ library as well. Unzip into a folder, let's call it c:\lib\blpapi_cpp_3.12.2.1
What you need to do is add c:\lib\blpapi_cpp_3.12.2.1\lib
into you PATH
environment variable. The important bit is to include the lib sub folder.
This solved my issue with python 3.7.
Solution that worked for me with Python 3.7 on Windows 10:
1/Download the Bloomberg experimental C++ 3.12 SDK from WAPI<GO>
or https://www.bloomberg.com/professional/support/api-library/
2/Extract, look for the lib folder, there are four files, blpapi3_32.dll
, blpapi3_32.lib
, blpapi3_64.dll
, blpapi3_64.lib
.
3/in the windows shell I typed where blpapi3_32.dll
and replaced all of these locations with the new files above. In my case it was at least C:\blp\DAPI
and C:\Users\MyName\AppData\Local\Continuum\anaconda3\Library\bin\blpapi3_32.dll
(you will need to close the Bloomberg desktop before overriding these files as they're used by the desktop application)
The problem is that you have the same libraries (DLL files) installed in the C:\blp\DAPI and the cpp folder. However, the version of these files is not the same, and that is why the error message appears. A simple fix is to copy and paste all libraries from the c:\lib\blpapi_cpp_3.12.2.1\lib folder into C:\blp\DAPI. This fixes the problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With