blpapi в Python версии 3.9

Я пытаюсь установить blpapi в Python версии 3.9

Для записи я могу заставить 3.7 и 3.8 работать, используя стандартную настройку и выполнив команду pip внизу этой страницы:

www.bloomberg.com/professional/support/api-library

Единственные изменения, которые мне нужно было сделать, это:

для версии 3.7:

py -3.7 -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi

для версии 3.8:

py -3.8 -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi

Я пробую точно такой же метод для 3.9, но это вызывает ошибку:

py -3.9 -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi

Это ошибка:

Looking in indexes: https://bloomberg.bintray.com/pip/simple
Collecting blpapi
  Downloading https://bloomberg.bintray.com/pip/simple/blpapi/blpapi-3.15.2.tar.gz (229 kB)
     |████████████████████████████████| 229 kB 3.3 MB/s
    ERROR: Command errored out with exit status 1:
     command: 'C:\Python39\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\darren\\AppData\\Local\\Temp\\pip-install-ldwe3a4a\\blpapi\\setup.py'"'"'; __file__='"'"'C:\\Users\\darren\\AppData\\Local\\Temp\\pip-install-ldwe3a4a\\blpapi\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\darren\AppData\Local\Temp\pip-pip-egg-info-ehpqfebq'
         cwd: C:\Users\darren\AppData\Local\Temp\pip-install-ldwe3a4a\blpapi\
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\darren\AppData\Local\Temp\pip-install-ldwe3a4a\blpapi\setup.py", line 54, in <module>
        assert blpapiRoot or (blpapiIncludesVar and blpapiLibVar), \
    AssertionError: BLPAPI_ROOT (or BLPAPI_INCDIR/BLPAPI_LIBDIR) environment variable isn't defined
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Я попытался найти решения для AssertionError: BLPAPI_ROOT (or BLPAPI_INCDIR/BLPAPI_LIBDIR) environment variable isn't defined, но не нашел ничего, что работает, и на данный момент застрял.

Вот мой основной код:

import os
import sys
#import xbbg

# check python version
if sys.version_info.major == 3:
    if sys.version_info.minor == 7:
        print('using version: 3.7')
        import blpapi

if sys.version_info.major == 3:
    if sys.version_info.minor == 8:
        print('using version: 3.8')
        with os.add_dll_directory('c:/blp/DAPI'):
            import blpapi


if sys.version_info >= (3,9):
    print('using version: 3.9')
    print('version 3.9 and above not working')
    sys.exit(0) # i added this to exit before the error message for v 3.9
    with os.add_dll_directory('c:/blp/DAPI'):
        import blpapi




x = 'hello world'
print(x)

Кто-нибудь может решить это, пожалуйста?

(в идеале blpapi работает со всеми версиями).


person D.L    schedule 20.11.2020    source источник


Ответы (1)


Согласно документации blapi, предварительно созданные двоичные файлы доступны только для Версии Python до 3.8.

Ошибка вызвана тем, что вы заставляете pip установить blapi binaries для Python версии 3.9, которая еще не доступна или еще не выпущена .pip загрузит и установит последнюю blapi binaries, если версия не указана.

i.e) python -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi

Спасибо и удачного кодирования :)

person Retr0_    schedule 20.11.2020
comment
спасибо за ясность. Можно ли вернуться к более старой версии python в коде? (например, если версия ›= 3.9, используйте 3.8). - person D.L; 20.11.2020
comment
Просто используйте python -m pip install --index-url=https://bloomberg.bintray.com/pip/simple blpapi, он загрузит последний выпуск для этой версии. - person Retr0_; 21.11.2020