У меня есть другая ветка с просьбой о помощи по "отсутствующему zlib". С милой помощью проблема была решена (почти).
Теперь я заинтересован в создании Python самостоятельно (на Ubuntu 10.10).
Несколько важных вопросов привлекли мое внимание:
После сборки Python (скажем, 2.7.1) нужно ли перестраивать Python, если у меня отсутствуют модули?
Есть ли способ узнать, какие модули будут отсутствовать до сборки Python? Скажи sqlite3. У меня установлен sqlite3 для системы по умолчанию (Python 2.6.6), и я могу импортировать ее в оболочку Python 2.6.6. Теперь я использую pythonbrew для сборки 2.7.1, и в оболочке я не могу импортировать sqlite3, потому что _sqlite3 недоступен. Я уверен, что есть еще несколько важных, которые мне не нужны для будущего развития (например, Django ..).
Я хочу научиться строить без использования pythonbrew .
Пожалуйста, поделитесь со мной своим опытом создания другой версии Python, и как бы вы решили проблему с отсутствующими модулями? Есть ли практическое решение для сборки Python?
Я никогда не удосужился создать его сам, поэтому, пожалуйста, потерпите меня. Я начинаю осознавать важность изучения и построения самого себя! Большое спасибо!
EDIT
Сначала я благодарю вас за ваш вклад. Они много значат. Я сделал здание.
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _curses _curses_panel
_tkinter bsddb185 bz2
dbm gdbm readline
sunaudiodev _sqlite3
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Я получил sqlite3 и перечитал
sudo apt-get install libreadline6 libreadline6-dev
sudo apt-get install libsqlite3-dev
Я пытался их импортировать, но все равно «без имени модуля xxxx».
В AskUbuntu Я фактически спрашивал людей, как получить предыдущие команды, потому что я не мог использовать эту функцию, когда нахожусь в оболочке Python 2.7.1. Я считаю, что это связано с readline.
Readline
Я установил Python-2.7.1 в этот каталог: / home / jwxie518 / python27 /
Я посмотрел в setup.py, нашел следующие строки:
# The sqlite interface
sqlite_setup_debug = False # verbose debug prints from this script?
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
]
Все пути, перечисленные выше, не существуют.
Таким образом, я думаю, я должен установить sqlite3 вручную? У меня есть еще одна ссылка здесь (но на китайском)
# Download the latest and extract
# Go into the extracted directory
./configure --prefix=/home/jwxie518/python27/python
make && make install
# Then edit python-2.7 's setup.py before rebuild it
# Sample (add these two lines to the end....)
'~/share/software/python/sqlite-3.6.20/include',
'~/share/software/python/sqlite-3.6.20/include/sqlite3',
# Then rebuild python like how we did before
Я зашел в свой каталог, где я установил sqlite3. Я нашел include / sqlite3.h только. Поэтому я вернулся и проверил / usr / include / . Я тоже могу найти только sqlite3.h.
Так что здесь происходит? Readline также не импортируется.
3-е РЕДАКТИРОВАНИЕ
Я начал все заново, кроме как я не переустановил sqlite3.
# Extract Python-2.7.1
# cd into Python-2.7.1
# ./configure
make >make.out 2>&1
less make.out
make.out находится здесь: http://pastebin.com/raw.php?i=7k3BfxZQ
Я все еще не могу импортировать sqlite3. Поэтому я зашел в setup.py и внес изменения:
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
'/home/jwxie518/python-mod/include/sqlite',
'/home/jwxie518/python-mod/include/sqlite3',
]
Опять же, все побежал (на этот раз я тоже сделал очистить )
Вывод здесь: http://pastebin.com/raw.php?i=8ZKgAcWn
Согласно выводу, я не думаю, что пользовательский путь включен .... (для полного вывода, пожалуйста, перейдите по ссылке выше и найдите sqlite)
сборка / temp.linux-i686-2.7 / дома / jwxie518 / Python-2.7.1 / Модули / _sqlite / util.o
-L / usr / lib -L / usr / local / lib -Wl, -R / usr / lib -lsqlite3 -o build / lib.linux-i686-2.7 / _sqlite3.so
Я все еще не могу импортировать sqlite3.
спасибо!
Большое спасибо, Майкл Диллон, за помощь. Ваш урок был аккуратным и понятным.
Я решил проблему, как только понял, что всякий раз, когда я пробовал Python-2.7.1, я фактически использовал тот, который был установлен Pythonbrew.
Мораль этой истории - прочитать все ошибки. Я пренебрег ошибками, сгенерированными при импорте sqlite3. На тот, который установлен Pythonbrew, не было установлено sqlite3. Пакет разработки для sqlite3 был установлен после того, как Pythonbrew установил Python-2.7.1
Спасибо.