2010-09-28 2 views
13

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

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 не помогло)

+1

Я бы попытался войти в Synaptic и найти Python и загрузить все dev-наборы и т. Д. – Scott

+2

Я бы подумал, что это будет лучше для unix.se, ubuntu.se, superuser или serverfault. – Chris

ответ

6

sudo apt-get build-dep python2.6 python-gdbm python-bsddb3 (Используйте python2.7 на maverick).

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

+0

Пакет "build-dep" не найден в моей системе. – deamon

+0

Это была ошибка, я исправил ее некоторое время назад. –

5

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

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

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

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

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

+2

Мой список игнорирования в Linux - это _tkinter, bsddb185, dl, imageop, sunaudiodev –

15

Если предположить, что у вас есть все зависимости установлены (на 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} 

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

+0

Отличная точка зрения, что только потому, что модуль не может быть найден, когда вы его создаете, это не значит, что вам это нужно. –

Смежные вопросы