Je suis un utilisateur de terminal Bloomberg et j'essaie de faire fonctionner l'API via Python.
J'ai installé Python 3.7.0 64 bits sur mon ordinateur Windows 7 64 bits sur: C:\Users\gp\AppData\Local\Programs\Python\Python37
J'ai téléchargé la version prise en charge C/C++ (v3.8.18.1) à partir de la bibliothèque d'API Bloomberg. J'ai décompressé le contenu en C:\blp\API\cpp
(je suis un utilisateur de terminal, donc j'avais déjà C:\blp\API
et j'ai ajouté un nouveau dossier "CPP"
).
J'ai ensuite installé l'API Python via pip comme indiqué au bas de cette page: API Library Support et j'ai reçu un message Successfully installed blpapi-3.12.2
. J'ai remarqué que cela a été installé à C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
En mode veille, jimport blpapi et j’obtiens les erreurs suivantes:
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.
J'ai cherché des réponses sur ce site et tenté les actions suivantes:
C:\blp\DAPI;C:\blp\DAPI\DDE;C:\blp\API\cpp;C:\blp\API\cpp\bin
(les dossiers DAPI et DDE étaient déjà présents)C:\blp\API\cpp
dans les "Variables utilisateur pour gp" et "variables système" dans les propriétés système C:\blp\API\cpp\bin
dans C:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
et d’essayer de le placer dans le sous-dossier "blpapi" et d’ajouter ces emplacements à la variable de chemin mentionnée ci-dessus et cela ne fonctionnait toujours pas. D'autres idées?
Le problème d'incompatibilité provient du fait que vous devez télécharger la version 3.12 du SDK. Actuellement, cela correspond à la "version expérimentale" (et non à la version prise en charge!) Que vous pouvez trouver ici:
https://www.bloomberg.com/professional/support/api-library/
D'autres remarques:
blpapi3_64.dll
blpapi3_32.dll
dans le même dossier que celui où se trouve votre code python. Comme @Malick le souligne dans sa réponse, Bloomberg présente actuellement un déséquilibre dans leur version sur https://www.bloomberg.com/professional/support/api-library/ où la version stable de blpapi
pour python nécessite version expérimentale du SDK C++ (c'est-à-dire v3.12.2.1
au lieu de v3.8.18.1
). Cela semble incompatible avec ce qu'ils libèrent via WAPI
dans le terminal.
Une autre option, à condition que vous puissiez trouver une construction pour votre plate-forme et votre version python souhaitées, consiste à utiliser conda
. Vous pouvez voir ce qui est disponible sur https://anaconda.org/ via 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
Vérifiez quel dossier se trouve dans votre chemin d’environnement. Parfois, les utilisateurs ont deux dossiers blp
dans le chemin système, c'est-à-dire C:\blp\DAPI
et C:\BloombergWindowsSDK\C++API\v3.12.3.1\lib
, assurez-vous de disposer des derniers blpapi3_32.dll
et blpapi3_64.dll
dans les deux fichiers.
Solution qui a fonctionné pour moi avec Python 3.7 sur Windows 10:
1/Téléchargez le SDK Bloomberg expérimental C++ 3.12 à partir de WAPI<GO>
ou https://www.bloomberg.com/professional/support/api-library/
2/Extrayez, recherchez le dossier lib, il y a quatre fichiers, blpapi3_32.dll
, blpapi3_32.lib
, blpapi3_64.dll
, blpapi3_64.lib
.
3/dans le shell Windows, j’ai tapé where blpapi3_32.dll
et remplacé tous ces emplacements par les nouveaux fichiers ci-dessus. Dans mon cas, c'était au moins C:\blp\DAPI
et C:\Users\MyName\AppData\Local\Continuum\anaconda3\Library\bin\blpapi3_32.dll
(vous devez fermer le bureau Bloomberg avant de remplacer ces fichiers tels qu'ils sont utilisés par l'application de bureau).
Avez-vous déjà résolu ce problème? J'ai le même problème. Fonctionnant sous Windows 10. Utilisation d'Anaconda.
Également reçu le message:
Successfully installed blpapi-3.12.2
Mais lors de l'importation de 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.
J'ai lutté avec ces problèmes comme d'autres ici. J'utilisais la dernière version d'Anaconda3 5.3.1 avec Python 3.7. J'ai fait ce qui suit:
désinstaller complètement anaconda (cela était difficile et je devais surtout le faire manuellement même après avoir essayé anaconda-clean)
désinstaller et réinstaller Bloomberg
python 3.6 installé (32 bits) de python.org
installé Anaconda dernière version 64 bits
trouvé les paquets nécessaires pour Bloomberg sur un autre PC qui ne rencontrait pas ces problèmes. Mais je les ai aussi trouvés ici: https://bloomberg.bintray.com/pip/simple/blpapi/
invite de commande régulière: pip install c:\YOURPATH\blpapi-3.9.1-cp36-cp36m-win32.whl
vérifier que cela a fonctionné - importer blpapi dans ptyhon a fonctionné mais cela ne fonctionnerait toujours pas dans Jupyter nb
essayé d'installer blpapi-3.9.1-cp36-cp36m-win_AMD64.whl dans anaconda prompt mais cela ne fonctionnait pas. Donc, dans Conda Prompt, j'ai installé Conda pyhton = 3.6.3 pour rétrograder de PY3.7 à 3.6.3.
maintenant dans le guide Invite: pip installer c:\YOURPATH\blpapi-3.9.1-cp36-cp36m-win_AMD64.whl et celui installé.
Une remarque sur les variables d'environnement dans PATH - Je n'ai rien d'autre que l'habituel C:\blp\DAPI; C:\blp\DAPI\DDE relatif à Bloomberg. La DLL dont vous avez besoin est déjà là (je crois). La seule chose que j'ai faite avec PATH était "C:\Utilisateurs\VOTRE\AppData\Local\Programmes\Python\Python36-32\Scripts \; C:\Utilisateurs\VOTRE\AppData\Local\Programmes\Python\Python36- 32 "et cela a été fait en cochant la case PATH lorsque j'ai installé Python 3.6.
Il y a beaucoup d'étapes redondantes ou inutiles ici. Je pense que le point le plus important est qu’il ya un problème avec les fichiers C++ que Bloomberg vous a communiqués avec leur dernière version: ces fichiers plus anciens semblent fonctionner. La clé ici est évidemment que vous devez rétrograder à PY 3.6. Je pense que les étapes 3 à 6 de mon exemple auraient fonctionné sans les deux premières.
J'espère que cela aide - étant donné que beaucoup de personnes ont parcouru un tas de solutions possibles et que personne ne semblait fonctionner pour tous, j'ai pensé poster ce message. S'il te plait, ne me touche pas pour ça - je suis nouvelle ici.
En réalité, l'indice est caché à la fin du message d'erreur, mais ce n'était pas tout à fait clair.
Vous devez également télécharger la bibliothèque Bloomberg C++. Décompressez dans un dossier, appelons-le c:\lib\blpapi_cpp_3.12.2.1
Ce que vous devez faire, c'est ajouter c:\lib\blpapi_cpp_3.12.2.1\lib
dans votre variable d'environnement PATH
. L’important est d’inclure le dossier lib sub.
Cela a résolu mon problème avec Python 3.7.
J'ai eu exactement la même erreur et répondu avec mon message d'erreur. Enfin réussi à le faire fonctionner.
D'une certaine manière cela a fonctionné. Je me sens vraiment stupide, mais soulagé.
Le problème est que vous avez les mêmes bibliothèques (fichiers DLL) installées dans les dossiers C:\blp\DAPI et cpp. Cependant, la version de ces fichiers n'est pas la même et c'est pourquoi le message d'erreur apparaît. Une solution simple consiste à copier et coller toutes les bibliothèques du dossier c:\lib\blpapi_cpp_3.12.2.1\lib dans C:\blp\DAPI. Cela corrige le problème.