2017-10-30 6 views
2

プログラムは、予定を作成し、QsQLiteデータベースで作成された予定に配置します。プログラムは.pyから実行されますが、私はそれが.exeにある必要があります。 私はcx_Freezeを使って.exeファイルを作成しましたが、プログラムはSQLiteデータベースを生成しません。だからここ は私のセットアップファイルです:SQLiteデータベースを使用して.pyから.exeファイルを作成する

from cx_Freeze import setup, Executable 
import os 
import sys 

os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python35\tcl\tcl8.6' 
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python35\tcl\tk8.6' 


build_exe_options = {"packages": [ 
    'os','sys','sqlite3'], 'include_files': [os.path.join(sys.base_prefix, 'DLLs', 'sqlite3.dll'), 'main.py','util.py','data.db']} 

setup(
    name = "Eclients", 
    version = "0.1", 
    options = {"build_exe": build_exe_options}, 
    executables = [Executable("main.py")] 
) 

しかし、データベースは、それを解決することができるか、そう

を開くことができないのですか?

+0

@ MrGumble、私の質問を編集し、私はTCLエラーを解決しますが、データベースはまだ開くことができません、それは動作していない他の考えがありますか? – akeg

答えて

0

'sqldrivers'フォルダ全体をC:\Program Files\Python35\Lib\site-packages\PyQt5\pluginsからmain.exeディレクトリにコピーすることでこの問題を解決しました。

1

include_filesステートメントにSQLiteデータベースファイルを含めていません。 http://cx-freeze.readthedocs.io/en/latest/faq.html#using-data-files

ただし、必要に応じて不足しているデータベースファイルを作成するオプションを用意することをお勧めします。これにより、データベースのSCHEMAがスクリプト内で定義され、プログラムロジックとの一貫性が維持されます。データを取り込む必要がある場合、これはあまり最適ではない解決策であるかもしれません。

関連する問題