Получение pyinstaller для компиляции с определенной версией sqlite - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь использовать pyinstaller для компиляции моего скрипта, используя версию sqlite3, установленную в сети, а не мою локальную машину. (Linux)

это легко проверить с помощью этого скрипта (testsql.py):

#!/usr/local/bin/python
import sqlite3
print("using",sqlite3.sqlite_version)

На моем локальном компьютере:

$ sqlite3-версия

3.6.20

Выполнение testsql.py:

$ testsql.py
используя 3.6.20

Я могу изменить версии с помощью LD_LIBRARY_PATH:

export LD_LIBRARY_PATH = / depot / sqlite-3.11 / lib
testsql.py
используя 3.11.1

Но работает с pyinstaller (установка python также не является локальной, и pyinstaller не устанавливается в нем, если это может вызвать проблемы):

/ path / to / python /path/to/someother/PyInstaller-3.3.1/pyinstaller.py -y --add-binary "/depot/sqlite-3.11/lib/libsqlite3.so.0 :." testsql.py
$ dist / testsql / testsql
используя 3.6.20

Что не соответствует ожидаемому заданному параметру --add-binary. Infact .so файл не тот, на который я указываю (показывает даты):

ls -l /depot/sqlite-3.11/lib/libsqlite3.so.0
20 марта 2016 г. /depot/sqlite-3.11/lib/libsqlite3.so.0
ls -l dist / testsql / libsqlite3.so.0
17 августа 2010 г. dist / testsql / libsqlite3.so.0

Я пробовал несколько разных вещей, но я никогда не получал желаемую версию sqlite, я смог получить правильный файл .so в каталоге testsql, когда я добавил sqlite3 в список исключений в файле спецификации но программа не запускается тогда.

$ dist / testsql / testsql
Traceback (последний вызов был последним): файл "testsql.py", строка 3, в import sqlite3 ModuleNotFoundError: Нет модуля с именем «sqlite3» [19581] Не удалось выполнить скрипт testsql

Моя цель - заморозить программу до определенной версии python и sqlite, которые не зависят от тех, которые установлены на компьютере, который компилирует или запускает программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...