Как скомпилировать 64-битный Python API для терминала Bloomberg?

Этот вопрос больше не актуален, так как Bloomberg теперь предоставляет 64-битные двоичные файлы


Я безуспешно пытаюсь скомпилировать 64-битную библиотеку Python API для терминала Bloomberg, так как мне нужно> 4 гигабайта адресного пространства и Bloomberg предоставляет только 32-битные двоичные файлы.

Я использую стандартный 64-разрядный Python 2.7, который был скомпилирован с помощью MS VS 2008, как видно из заголовка, когда я запускаю Python:

Y:\>python
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Я загрузил последнюю версию API в центре загрузки API страницы WAPI и строго следовал инструкциям на странице . эта страница о том, как скомпилировать 64-битные расширения для Python, сначала загрузив Visual C++ 2008 Express, затем установив SDK 3.5 SPI, затем войдя в командную строку SDK, а затем выполнив:

setenv /Release /x64
set DISTUTILS_USE_SDK=1

Командная строка становится зеленой, как и ожидалось.

Я установил правильные переменные среды, чтобы найти C++ API, а именно BLPAPI_ROOT:

C:\Program Files\Microsoft SDKs\Windows\v7.0>set
ALLUSERSPROFILE=C:\ProgramData
AMDAPPSDKROOT=C:\Program Files (x86)\AMD APP SDK\2.9\
APPDATA=C:\Users\thomas\AppData\Roaming
APPVER=6.1
asl.log=Destination=file
BLPAPI_ROOT=C:\blp\API\APIv3\C++API\v3.7.5.1
CLASSPATH=.;C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
.......

Который, как вы можете видеть, существует:

C:\Program Files\Microsoft SDKs\Windows\v7.0>cd %BLPAPI_ROOT%

C:\blp\API\APIv3\C++API\v3.7.5.1>

Но….

C:\blp\API\APIv3\Python\v3.5.2.0>python setup.py install
running install
running build
running build_py
running build_ext
building 'blpapi._internals' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\cl.exe /c /nolog
o /Ox /MD /W3 /GS- /DNDEBUG -IC:\blp\API\APIv3\C++API\v3.7.5.1\include -Ic:\pyth
on27\include -Ic:\python27\PC /Tpblpapi/internals_wrap.cxx /Fobuild\temp.win-amd
64-2.7\Release\blpapi/internals_wrap.obj
internals_wrap.cxx
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\xlocale(342) : war
ning C4530: C++ exception handler used, but unwind semantics are not enabled. Sp
ecify /EHsc
blpapi/internals_wrap.cxx(3892) : warning C4244: 'argument' : conversion from 'b
lpapi_Float64_t' to 'blpapi_Float32_t', possible loss of data
blpapi/internals_wrap.cxx(3906) : warning C4244: 'argument' : conversion from 'b
lpapi_Float64_t' to 'blpapi_Float32_t', possible loss of data
blpapi/internals_wrap.cxx(3925) : warning C4244: 'argument' : conversion from 'b
lpapi_Float64_t' to 'blpapi_Float32_t', possible loss of data
blpapi/internals_wrap.cxx(3989) : warning C4244: 'argument' : conversion from 'b
lpapi_Float64_t' to 'blpapi_Float32_t', possible loss of data
blpapi/internals_wrap.cxx(4006) : warning C4244: 'argument' : conversion from 'b
lpapi_Float64_t' to 'blpapi_Float32_t', possible loss of data
blpapi/internals_wrap.cxx(16170) : warning C4244: '=' : conversion from 'Py_ssiz
e_t' to 'unsigned int', possible loss of data
blpapi/internals_wrap.cxx(16246) : error C2664: 'blpapi_ServiceRegistrationOptio
ns_getGroupId' : cannot convert parameter 2 from 'const char *' to 'char *'
        Conversion loses qualifiers
error: command 'cl.exe' failed with exit status 2

Я бьюсь с этой компиляционной битвой уже 2 дня. Я удалил все компиляторы C, переустановил их. Удалил Anaconda Python, переустановил болотный стандартный Python 64 чистым (каталоги между ними стерты). Переустановил API Bloomberg. В основном пытался сделать мою машину как можно более чистой, прежде чем начинать с чистой. Нет радости.

Кто-нибудь сделал это? Я что-то упустил в вышеизложенном?

Погуглив, я много слышал о vcvarsall.bat и о том, как вы должны скопировать его в файл vcvarsall amd64, но я понял, что в этом нет необходимости, если вы выполняете описанные выше шаги из командной строки SDK3.5. (а именно, установите правильные переменные среды, чтобы использовался правильный 64-битный компилятор), что, как мне кажется, я успешно сделал. Я не думаю, что проблема там.


ОБНОВИТЬ

В коде Python, размещенном на странице WAPI терминала, есть ошибка (версия 3.5.2). Вместо этого используйте тот, который находится на веб-сайте (3.5.5). Компилируется в 64 бит без проблем, используя рецепт выше.


person Thomas Browne    schedule 10.02.2014    source источник
comment
Вы уверены, что эти API предназначены для работы с x64 Python?   -  person Zaur Nasibov    schedule 10.02.2014
comment
да. Это ответ службы поддержки Bloomberg, когда я спросил несколько недель назад: в настоящее время нет двоичного установщика для 64-разрядной версии Python. Только 32-бит. Вам придется скомпилировать его самостоятельно, загрузив SDK API C++ и SDK API Python. Вам понадобится 64-разрядный компилятор Visual C++ и Python 2.6/2.7 (64-разрядная версия). Кроме того, я передаю ваш запрос соответствующему менеджеру по продукту, чтобы детали вашего запроса были видны соответствующим сторонам. Однако, к сожалению, сегодня их нет в офисе, поэтому в настоящее время я не могу передать запрос напрямую.   -  person Thomas Browne    schedule 10.02.2014
comment
Думаю, я буквально следовал тому, что они сказали.   -  person Thomas Browne    schedule 10.02.2014