Как указать путь к SWIG?

Я пытаюсь собрать библиотеку M2Crypto, но swig не находит заголовочные файлы:

M2Crypto@(master=)$ python setup.py build
running build
running build_py
running build_ext
building 'M2Crypto.__m2crypto' extension
swigging SWIG/_m2crypto.i to SWIG/_m2crypto_wrap.c
swig -python -I/usr/include/python2.7 -I/usr/include -includeall -modern -builtin -outdir build/lib.linux-i686-2.7/M2Crypto -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
SWIG/_evp.i:12: Error: Unable to find 'openssl/opensslconf.h'
SWIG/_ec.i:7: Error: Unable to find 'openssl/opensslconf.h'
error: command 'swig' failed with exit status 1

У меня есть заголовки OpenSSL, включая openssl/opensslconf.h, в /usr/include/i386-linux-gnu - именно туда их устанавливает пакет openssl-dev. Этот путь не передается swig; setup.py похоже ничего об этом не знает.

Похоже ли это на ошибку (или проблему) в пакете, например M2Crypto? Что такое правильное исправление?


person Konstantin Shemyak    schedule 24.10.2015    source источник
comment
Возможный дубликат Установка M2Crypto 0.20 .1 на Python 2.6 в Ubuntu 14.04   -  person mpromonet    schedule 10.01.2016


Ответы (1)


Причина в том, что libssl-dev переместил opensslconf.h в зависимое от архитектуры поддерево /usr/include/x86_64-linux-gnu. В зависимости от вашей архитектуры каталог может быть другим.

Есть два возможных обходных пути (любой из них будет работать):

Вариант 1: Софтлинк файла туда, где он был до изменения:

sudo ln -s /usr/include/x86_64-linux-gnu/openssl/opensslconf.h /usr/include/openssl/opensslconf.h

Это также описано в этой статье.

Вариант 2: В setup.py M2Crypto добавьте каталог для конкретной архитектуры в путь включения, используемый командой swig:

-I/usr/include/x86_64-linux-gnu

Это также описано в этом статья

Для этого также открыта проблема 69 в проекте M2Crypto.

Энди

person Andreas Maier    schedule 25.10.2015