Скомпилируйте Python 3.4 с помощью sqlite3

5

Я скомпилировал SQLite3 3.8.6 и установил его в ${HOME}/opt с помощью

LDFLAGS="-L${HOME}/opt/lib" CFLAGS="-L${HOME}/opt/include" ./configure --prefix=$HOME/opt
make && make install

Теперь я пытаюсь скомпилировать Python 3.4.2 для использования этой версии вместо версии, установленной для всей системы. У меня нет доступа root к этой системе. Чтобы скомпилировать Python, я использую:

LDFLAGS="-L${HOME}/opt/lib" CFLAGS="-L${HOME}/opt/include" ./configure --prefix=$HOME/opt
make && make install

Я смог скомпилировать Python 3.3.5 с моей новой версией, если SQLite3, но эти же шаги, похоже, не работают для меня для 3.4.2.

Как я могу скомпилировать Python 3.4.2 для включения моей версии SQLite 3.8.6, которая находится в ${HOME}/opt?

Спасибо.

EDIT: Он компилирует и устанавливает ОК, за исключением того, что использует более старую системную версию sqlite3 вместо версии, которую я скомпилировал и установил самостоятельно.

  • 0
    Попробуйте получить какой-то вывод во время установки, чтобы увидеть все, что он делает, и он не указывает на неправильное место
  • 0
    Вы уверены, что она использует версию системы, а не свою собственную копию?
Показать ещё 2 комментария
Теги:
sqlite3

3 ответа

8
Лучший ответ

Существует также возможность предварительной компоновки вашей пользовательской сборки Python с помощью собственного SQL-3. (У меня была такая же проблема: пользовательский python использовал системный sqlite3, полностью игнорируя построенный sqlite3).

Префикс для команд configure и make:

LD_RUN_PATH=$HOME/opt/lib configure LDFLAGS="-L$HOME/opt/lib" CPPFLAGS="-I$HOME/opt/include" …
LD_RUN_PATH=$HOME/opt/lib make

так что построенный python3 по умолчанию связан с вашим sqlite3. Это сработало для меня.

  • 0
    Спасибо, это работает отлично. Теперь нет необходимости использовать LD_LIBRARY_PATH в моем .bashrc.
1
import platform,sqlite3
print("Oper Sys : %s %s" % (platform.system(), platform.release()))
print("Platform : %s %s" % (platform.python_implementation(),platform.python_version()))
print("SQLite   : %s" % (sqlite3.sqlite_version))

Когда я запускаю этот код, вывод содержит системную версию sqlite3:

Oper Sys : Linux 3.2.0-4-amd64
Platform : CPython 3.4.2
SQLite   : 3.7.13

После установки sqlite v3.8.6 в разделе ${HOME}/opt {include, lib} и установки этого в моем .bashrc:

export LD_LIBRARY_PATH="${HOME}/opt/lib"

Я получаю желаемый результат:

Oper Sys : Linux 3.2.0-4-amd64
Platform : CPython 3.4.2
SQLite   : 3.8.6

Обратите внимание, что версия SQLite изменяется с 3.7.13 на 3.8.6

  • 0
    Привет, я следовал вашему методу здесь, выполнив export LD_LIBRARY_PATH="/usr/local/opt" в моем ~/.bash_profile , где /usr/local/opt - это каталог, который содержит все символические ссылки на библиотеки, установленные на homebrew, включая sqlite3 . Однако после перезапуска моего bash он по-прежнему дает общесистемную версию sqlite3 на Python. Любое предложение?
  • 0
    Попробуйте использовать метод в другом ответе, @tzot.
Показать ещё 1 комментарий
0

Привет, мне помогло это:

cd /tmp
wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz
tar xvf sqlite-autoconf-3280000.tar.gz
mv /usr/bin/sqlite3 /usr/bin/sqlite3.7
cp /tmp/sqlite-autoconf-3280000/sqlite3 /usr/bin/sqlite3
cp /tmp/sqlite-autoconf-3280000/.libs/libsqlite3.so.0.8.6 /usr/lib64/libsqlite3.so.0.8.6
cp /tmp/sqlite-autoconf-3280000/.libs/libsqlite3.so.0 /usr/lib64/libsqlite3.so.0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню