2017-10-30 7 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가 스크립트 내에서 정의되고 프로그램 논리와 일관되게 유지 될 수 있습니다. 그러나 데이터를 채워야하는 경우 이는 최적의 솔루션이 아닐 수도 있습니다.