Правильное построение локального python3 с поддержкой bz2 - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь создать локальную версию python3 (в частности, python3.7, но та же проблема с 3.6.6), но сталкиваюсь с проблемами при подключении к некоторым библиотекам C и / или заголовкам (по крайней мере, это то, что я думаю проблема в том).

Я могу собрать python3.7, но столкнуться с проблемами с bzip2 (но я подозреваю, что будут другие системные библиотеки, о которых я скучаю, но не знаю). Это проявляется при попытке импортировать различные пакеты / модули, которые требуют этого как ошибка импорта:

ModuleNotFoundError: No module named '_bz2'

Из этого вопроса stackoverflow - Задать вопрос - кажется, что я построил python без правильных заголовков bz2. Сама сборка Python не терпит неудачу.

Конкретный вопрос: как собрать локальную версию python с bz2? В более общем плане, вопрос заключается в том, как правильно ссылаться на системные библиотеки? (поскольку могут быть другие, с которыми я не сталкивался с ошибками)

С точки зрения того, что я пытался - я нашел этот (старый) вопрос - Как вы назначаете bz2 для altinstall из python? и этот более свежий вопрос Компилируете поддержку bz2 в python2 и пробовали несколько вещей, основанных на них.

Первая проблема, с которой я столкнулся, - это поиск нужных библиотек и т. Д. Для связи (решение в приведенном выше вопросе предлагает установить CFLAGS="-I/path/to/bz2/include" и LDFLAGS="-L/path/to/bz2/lib"). Предположительно, они где-то в моей системе (ubuntu 16.04), так как системные установки python2.7 и python3.5 не имеют проблем с bzip2.

Я нашел libbz2.so.1 (и некоторые другие в) /lib/x86_64-linux-gnu/ - но папки, похоже, не следовали шаблону примера / ответа выше. Таким образом, я собрал новую локальную версию bz2 (в .bzp в моей локальной папке), а затем попытался создать ссылку на нее, когда попытался собрать python3.7, используя следующее:

./configure --prefix=/home/user/.localpython CFLAGS="-I/home/user/.bz2/include" LDFLAGS="-L/home/user/.bz2/lib"

Я также попробовал более общую конфигурацию (которая основывалась на Компиляции Python с поддержкой bz2 , ссылка на которую приведена во второй статье выше.)

./configure --prefix=/home/user/.python CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

(оба из которых были неудачными)

Любые указатели, советы и т. Д. С благодарностью - заранее спасибо!

1 Ответ

0 голосов
/ 07 июля 2018

Ubuntu по умолчанию не устанавливает файлы, необходимые для включения поддержки bz2 (или любой другой подобной поддержки библиотек) при компиляции Python. Вам нужно добавить пакет заголовки для разработки для библиотеки.

Для поддержки bz2 в Ubuntu это пакет libbz2-dev . Вам нужно будет установить больше таких пакетов для других функций.

Пакет размещает заголовки в стандартном месте, которое знает скрипт Python configure. Вам не нужны дополнительные флаги.

Экстраполируя из зависимостей сборки Python 3.6 в Ubuntu 17.10 , вы также хотели бы:

libbluetooth-dev
libbz2-dev
libdb-dev
libexpat1-dev
libffi-dev
libgdbm-dev
liblzma-dev
libmpdec-dev
libncursesw5-dev
libreadline-dev
libsqlite3-dev
libssl-dev
zlib1g-dev

и если вы хотите поддерживать библиотеку Tk GUI, tk-dev и blt-dev.

...