Если предположить, что у вас есть все зависимости установлены (на 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 для запуска производственных приложений на машины, у которых не все предустановленные библиотеки поддержки.
Я бы попытался войти в Synaptic и найти Python и загрузить все dev-наборы и т. Д. – Scott
Я бы подумал, что это будет лучше для unix.se, ubuntu.se, superuser или serverfault. – Chris