私はブルームバーグのターミナルユーザーであり、Pythonを介してAPIを動作させようとしています。
私はPython 3.7.0 64ビットコンピューターのWindows 7 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"
を追加しました)。
次に、Pythonこのページの最後に記載されているpipを介してPython :: 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
フォルダーからC:\Users\gp\AppData\Local\Programs\Python\Python37\Lib\site-packages
にblpapi3_64.dllのコピーを配置しようとし、サブフォルダー「blpapi」に配置しようとしましたが、上記のパス変数にそれらの場所を追加しましたが、まだ機能しませんでした。他のアイデアはありますか?
不一致の問題は、SDKバージョン3.12をダウンロードする必要があるという事実に起因しています。現在、これは「実験リリース」に対応しています(サポートされていないリリースです!):
https://www.bloomberg.com/professional/support/api-library/
その他のコメント:
blpapi3_64.dll
blpapi3_32.dll
は、pythonコードが配置されているフォルダーと同じフォルダーに。問題は、C:\ blp\DAPIとcppフォルダに同じライブラリ(DLLファイル)がインストールされていることです。ただし、これらのファイルのバージョンは同じではないため、エラーメッセージが表示されます。簡単な修正方法は、c:\ lib\blpapi_cpp_3.12.2.1\libフォルダーからすべてのライブラリーをC:\ blp\DAPIにコピーして貼り付けることです。これにより問題が修正されます。
Windows 10でPython 3.7を使用して解決したソリューション:
1/WAPI<GO>
またはhttps://www.bloomberg.com/professional/support/api-library/
からブルームバーグの実験的なC++ 3.12 SDKをダウンロードします
2/Extract、libフォルダを探します。blpapi3_32.dll
、blpapi3_32.lib
、blpapi3_64.dll
、blpapi3_64.lib
の4つのファイルがあります。
3/Windowsシェルでwhere blpapi3_32.dll
と入力し、これらの場所をすべて上記の新しいファイルに置き換えました。私の場合、少なくともC:\blp\DAPI
およびC:\Users\MyName\AppData\Local\Continuum\anaconda3\Library\bin\blpapi3_32.dll
でした(これらのファイルはデスクトップアプリケーションで使用されるため、これらのファイルをオーバーライドする前にブルームバーグデスクトップを閉じる必要があります)
@Malickが答えで指摘しているように、現在、ブルームバーグは https://www.bloomberg.com/professional/support/api-library/ のバージョン管理に不一致があります。ここで、blpapi
の安定バージョンはpythonには、C++ SDKの実験バージョンが必要です(つまり、v3.12.2.1
の代わりに v3.8.18.1
)。これは、端末のWAPI
を介してリリースしているものと矛盾しているようです。
希望するプラットフォーム用のビルドを見つけることができ、pythonバージョンの場合、conda
を使用することもできます。別のオプションは 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
環境パスにあるフォルダーを確認します。システムパスに2つのblp
フォルダーがある場合があります。つまり、両方ともC:\blp\DAPI
およびC:\BloombergWindowsSDK\C++API\v3.12.3.1\lib
、最新のblpapi3_32.dll
およびblpapi3_64.dll
両方のファイル。
Windows上の3.7では、3.31.1バージョンのC\C++ライブラリを使用する必要がありました。実験的とマークされていましたが、ブルームバーグでしたが、正常にインポートできました。
この問題を解決したことはありますか?私は同じ問題を抱えています。 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.
私はここで他の人と同様にこれらの問題に苦労しました。 Python 3.7で最新のAnaconda3 5.3.1を実行していました。私は次のことをしました:
anacondaを完全にアンインストールします(これは困難であり、anaconda-cleanを試した後でもほとんど手動で行う必要がありました)
bloombergをアンインストールして再インストールする
Python.orgからpython 3.6(32ビット)をインストールしました
インストールされたAnaconda最新バージョン64ビット
これらの問題を抱えていない別のPCでブルームバーグに必要なパッケージを見つけました。しかし、私もここでそれらを見つけました: https://bloomberg.bintray.com/pip/simple/blpapi/
通常のコマンドプロンプト:pip install c:\YOURPATH\blpapi-3.9.1-cp36-cp36m-win32.whl
動作したことを確認します-ptyhonのimport blpapi
は動作しましたが、Jupyter nbでは動作しません
Anacondaプロンプトにblpapi-3.9.1-cp36-cp36m-win_AMD64.whlをインストールしようとしましたが、うまくいきませんでした。 Conda Promptでconda install python=3.6.3
を実行してPY3.7から3.6.3にダウングレードしました
今condaプロンプト:pip install c:\YOURPATH\blpapi-3.9.1-cp36-cp36m-win_AMD64.whl
でインストール済み。
PATH内の環境変数に関するメモ-Bloombergに関連する通常のC:\blp\DAPI;C:\blp\DAPI\DDE
以外には何もありません。
必要なdllは既にそこにあります(私は信じています)。
PATHで行ったことの1つは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は、最初の2つがなくても機能すると思います。
実際には、エラーメッセージの最後に手がかりが隠されていますが、完全に明確ではありませんでした。
Bloomberg C++ライブラリもダウンロードする必要があります。フォルダーに解凍して、c:\lib\blpapi_cpp_3.12.2.1
あなたがする必要があるのはc:\lib\blpapi_cpp_3.12.2.1\lib
をPATH
環境変数に入れます。重要なのは、libサブフォルダーを含めることです。
これにより、python 3.7。
まったく同じエラーが発生し、エラーメッセージが返されました。ようやく機能しました。
python -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi
_を使用してblpapiをインストールしましたどういうわけかそれは働いた。私は本当に愚かだと感じますが、ホッとしました。
My Pythonバージョンは3.7.1 [MSC v.1915 64ビット(AMD64)]、Windows7 64ビットです。
新しいPCに移行したところ、同じ2つのエラーが発生しました。
"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というモジュールがありますか?