Пакеты Ubuntu, необходимые для компиляции Python 2.7 - PullRequest
14 голосов
/ 28 сентября 2010

Я пытался скомпилировать Python 2.7 в Ubuntu 10.4, но получил следующее сообщение об ошибке после запуска make:

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             bsddb185           sunaudiodev     
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

Какие пакеты мне нужны? (setup.py не помог)

Ответы [ 3 ]

16 голосов
/ 17 июня 2011

Предполагая, что у вас установлены все зависимости (в Ubuntu это будет куча таких вещей, как sudo apt-get install libdb4.8-dev и различные другие пакеты -dev, вот как я собираю Python.

tar zxvf Python-2.7.1.tgz
cd Python-2.7.1

# 64 bit self-contained build in /opt
export TARG=/opt/python272
export CC="gcc -m64" 
export LDFLAGS='-Wl,-rpath,\$${ORIGIN}/../lib -Wl,-rpath-link,\$${ORIGIN}/../lib -Wl,--enable-new-dtags'
./configure --prefix=$TARG --with-dbmliborder=bdb:gdbm --enable-shared --enable-ipv6
make
make install

ЕдинственноеМодули, которые не собираются во время сборки:

_tkinter - I don't do GUI apps and would use wxWindows if I did
bsddb185 - horribly obsolete version of bdb
dl - deprecated in 2.6              
imageop - deprecated in 2.6
sunaudiodev - obsolete interface to some SparcStation device I think

Далее я собираю все .so файлы, которых еще нет в установочных каталогах Python, и копирую их:

# collect binary libraries ##REDO THIS IF YOU ADD ANY ADDITIONAL MODULES##
cd /opt/python272
find . -name '*.so' | sed 's/^/ldd -v /' >elffiles
echo "ldd -v bin/python" >>elffiles
chmod +x elffiles
./elffiles | sed 's/.*=> //;s/ .*//;/:$/d;s/^              *//' | sort -u | sed 's/.*/cp -L & lib/' >lddinfo
# mkdir lib
chmod +x lddinfo
./lddinfo

Изатем добавьте setuptools для правильной оценки

#set the path
export PATH=/opt/python272/bin:$PATH

#install setuptools
./setuptools-0.6c11-py2.7.egg

На этом этапе я могу сделать тарбол из / opt / python272 и запустить его на любом 64-битном дистрибутиве Linux, даже урезанном, который не имеет ни одной зависимостиустановлен или более старый дистрибутив, который имеет старые устаревшие версии зависимостей.

Я также установил pip, но в этот момент в моих заметках есть пробел из-за неудачной борьбы с virtualenv.не поддерживает этот сценарий. Предположительно, я сделал easy_install pip, а затем:

export LD_RUN_PATH=\$${ORIGIN}/../lib
pip install cython
pip install {a whole bunch of other libraries that I expect to use}

После того, как я закончил установку модулей, я возвращаюсь и повторно запускаю команды для сбора.так файлы и сделай новый тарбол.Было несколько пакетов, в которых мне нужно было обойтись с LDFLAGS, чтобы заставить их установить правильно, и я еще не провел достаточно тщательного тестирования, но пока он работает, и я использую эту сборку Python для запуска производстваприложения на компьютерах, на которых не установлены все библиотеки поддержки.

6 голосов
/ 28 сентября 2010

Это более старые (в основном устаревшие) модули, которые вы, вероятно, не будете использовать. Вы должны быть в состоянии безопасно игнорировать предупреждения.

Единственное, о чем вы можете беспокоиться, пытаясь исправить, это _bsddb, который должен исчезнуть после установки Berkeley DB 4.8 ... Я не уверен, находится ли он в репозитории Ubuntu или нет. (редактировать: очевидно, это пакет дБ )

bsddb185 - более старая версия модуля Oracle Berkley Database. Вы можете смело игнорировать это, насколько я знаю.

sunaudiodev устарело, недокументировано, я сомневаюсь, что вам когда-нибудь понадобится его использовать. Вы должны быть в состоянии безопасно проигнорировать это.

Надеюсь, это немного поможет, во всяком случае ...

6 голосов
/ 28 сентября 2010

sudo apt-get build-dep python2.6 python-gdbm python-bsddb3 (используйте python2.7 при индивидуализации).

Для получения дополнительной информации см. этот ответ .Также посмотрите на эту страницу , которая в равной степени применима для построения на Lucid.

...