Этот вопрос больше не актуален, так как 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 бит без проблем, используя рецепт выше.