使pyinstaller与特定版本的sqlite一起编译

时间:2018-09-05 15:16:09

标签: linux python-3.x sqlite pyinstaller

我正在尝试使用pyinstaller来通过网络上安装的sqlite3版本而不是本地计算机来编译脚本。 (Linux)

可以使用以下脚本(testsql.py)轻松对其进行测试:

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

在我的本地计算机上:

  

$ sqlite3 -version

     

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选项不符合预期。实际上,.so文件不是我要指向的文件(显示日期):

  

ls -l /depot/sqlite-3.11/lib/libsqlite3.so.0
  2016年3月20日/depot/sqlite-3.11/lib/libsqlite3.so.0
  ls -l dist / testsql / libsqlite3.so.0
  2010年8月17日dist / testsql / libsqlite3.so.0

我尝试了许多不同的操作,但是我从未获得所需的sqlite版本,当我将sqlite3添加到spec文件中的排除列表时,我能够在testsql目录中获得正确的.so文件但是程序随后无法运行。

  

$ dist / testsql / testsql
  追溯(最近一次通话):文件“ testsql.py”,第3行,在          导入sqlite3 ModuleNotFoundError:没有名为“ sqlite3”的模块[19581]无法执行脚本testsql

我的目标是将程序冻结为特定版本的python和sqlite,这些版本与编译或运行该程序的计算机上安装的版本无关。

0 个答案:

没有答案