web-dev-qa-db-fra.com

Erreur d'installation de blpapi en python pour l'API bloomberg

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: 

  • définissez la variable 'path' dans "Variables utilisateur pour gp" et "Variables système" dans les propriétés système sur: 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)
  • ajout d'une variable 'BLPAPI_ROOT' de: C:\blp\API\cpp dans les "Variables utilisateur pour gp" et "variables système" dans les propriétés système 
  • essayé de placer une copie de blpapi3_64.dll du dossier 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. 
  • assuré que j'ai téléchargé Visual Studio Build Tools 2017

D'autres idées? 

3
pgibs

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/

 enter image description here

D'autres remarques: 

  1. Je vous conseille de télécharger BloombergWindowsSDK via le terminal Bloomberg car vous obtiendrez également des codes python.
  2. Pas besoin de jouer avec le chemin système, vous pouvez simplement copier et coller le blpapi3_64.dllblpapi3_32.dll dans le même dossier que celui où se trouve votre code python. 
2
Malick

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
1
mgilbert

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.

1
Haohan Li

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).

1
alex314159

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.
0
user1455613

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:

  1. désinstaller complètement anaconda (cela était difficile et je devais surtout le faire manuellement même après avoir essayé anaconda-clean)

  2. désinstaller et réinstaller Bloomberg

  3. python 3.6 installé (32 bits) de python.org

  4. installé Anaconda dernière version 64 bits

  5. 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/

  6. invite de commande régulière: pip install c:\YOURPATH\blpapi-3.9.1-cp36-cp36m-win32.whl

  7. vérifier que cela a fonctionné - importer blpapi dans ptyhon a fonctionné mais cela ne fonctionnerait toujours pas dans Jupyter nb 

  8. 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.

  9. 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. 

0
GoPackGo

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.

0
WillZ

J'ai eu exactement la même erreur et répondu avec mon message d'erreur. Enfin réussi à le faire fonctionner. 

  1. Blpapi désinstallé et mon logiciel professionnel Bloomberg.
  2. Réinstallation du dernier professionnel Bloomberg
  3. Dépose du répertoire C++ dans C:\blp\api\cpp comme auparavant
  4. blpapi installé avec "python -m pip install --index-url = https://bloomberg.bintray.com/pip/simple blpapi" dans mon dossier

D'une certaine manière cela a fonctionné. Je me sens vraiment stupide, mais soulagé. 

0
P D

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.

0
Claude