Установка bitarray в Python 2.6 в Windows - PullRequest
0 голосов
/ 23 апреля 2009

Я хотел бы установить bitarray в Windows с Python 2.6.

У меня установлен mingw32, а для C:\Python26\Lib\distutils\distutils.cfg установлено:

[build]
compiler = mingw32

Если я печатаю, в окне cmd.exe:

C:\Documents and Settings\john\My Documents\bitarray-0.3.5>python setup.py install

Я получаю:

[normal python messages skipped]
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c bitarray/_bitarray.c -o build\temp.win32-2.6\Release\bitarray\_bitarray.o
bitarray/_bitarray.c:2197: error: initializer element is not constant
bitarray/_bitarray.c:2197: error: (near initialization for `BitarrayIter_Type.tp_getattro')
bitarray/_bitarray.c:2206: error: initializer element is not constant
bitarray/_bitarray.c:2206: error: (near initialization for `BitarrayIter_Type.tp_iter')
bitarray/_bitarray.c:2232: error: initializer element is not constant
bitarray/_bitarray.c:2232: error: (near initialization for `Bitarraytype.tp_getattro')
bitarray/_bitarray.c:2253: error: initializer element is not constant
bitarray/_bitarray.c:2253: error: (near initialization for `Bitarraytype.tp_alloc')
bitarray/_bitarray.c:2255: error: initializer element is not constant
bitarray/_bitarray.c:2255: error: (near initialization for `Bitarraytype.tp_free')
error: command 'gcc' failed with exit status 1

Может кто-нибудь помочь?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2009

MingW не может скомпилировать исходники bitarray, я пробовал с версией 3.4.5 и получаю те же ошибки. Тем не менее, он прекрасно компилируется с компилятором Microsoft.

Для вашего удобства я собрал установщики msi и exe для Python 2.6:

http://starship.python.net/crew/theller/bitarray-0.3.5.win32-py2.6.msi

http://starship.python.net/crew/theller/bitarray-0.3.5.win32-py2.6.exe

Пожалуйста, укажите автора bitarray, чтобы он мог загрузить их в pypi.

0 голосов
/ 21 февраля 2010

Мне нужно было собрать bitarray для себя (мне нужно было сдвигать биты), поэтому я не мог использовать ваши готовые двоичные файлы. Проблема заключается в том, что mingw не работает должным образом с __declspec (dllimport). Python уже решает эту проблему для сборок Cygwin, используя автоматический импорт вместо declspec. Однако это не включено для сборок mingw. Поэтому вам нужно либо изменить макрос PyAPI_FUNC в pyport.h, либо добавить

#define __CYGWIN__

к источникам bitarray.

...