Я скомпилировал 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 вместо версии, которую я скомпилировал и установил самостоятельно.
Существует также возможность предварительной компоновки вашей пользовательской сборки 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.
Это сработало для меня.
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
export LD_LIBRARY_PATH="/usr/local/opt"
в моем ~/.bash_profile
, где /usr/local/opt
- это каталог, который содержит все символические ссылки на библиотеки, установленные на homebrew, включая sqlite3
. Однако после перезапуска моего bash он по-прежнему дает общесистемную версию sqlite3
на Python. Любое предложение?
Привет, мне помогло это:
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