2014-05-22 4 views
1

GUI.py에서 실행하고 내가 만든 모듈을 가져 오는 프로젝트가 있습니다. 특히 GUI.py와 같은 디렉토리에있는 "Library"패키지에서 모듈을 가져옵니다. cx_Freeze로 스크립트를 고정 시켜서 윈도우 실행 파일을 만들고 싶습니다. exe 파일을 만들 수 있지만 실행하려고하면 "ImportError : No module library."라는 메시지가 나타납니다.exe를 만들 때 cx_Freeze가 내 프로젝트에서 자체 정의 모듈을 찾지 못합니다.

출력에서 ​​라이브러리에서 가져온 모든 모듈을 가져올 수 없습니다. 나는에 유래에서 찾을 사람들이 가지고 있었던 유사한 문제에 따라 수정을 많이 만들 수있는 모든 것을 시도했습니다

import sys, os 
from cx_Freeze import setup, Executable 

build_exe_options = {"packages":['Libary', 'Graphs', 'os'], 
       "includes":["tkinter", "csv", "subprocess", "datetime", "shutil", "random", "Library", "Graphs"], 
     "include_files": ['GUI','HTML','Users','Tests','E.icns', 'Graphs'], 
     } 

base = None 
exe = None 
if sys.platform == "win32": 
exe = Executable(
    script="GUI.py", 
    initScript = None, 
    base = "Win32GUI", 
    targetDir = r"built", 
    targetName = "GUI.exe", 
    compress = True, 
    copyDependentFiles = True, 
    appendScriptToExe = False, 
    appendScriptToLibrary = False, 
    icon = None 
) 
base = "Win32GUI" 

setup(name = "MrProj", 
version = "2.0", 
description = "My project", 
options = {"build.exe": build_exe_options}, 
#executables = [Executable("GUI.py", base=base)] 
executables = [exe] 
) 

: 여기 내 setup.py의 모습입니다. 그러나, 내가 무엇을해도, cx_freeze가 라이브러리에서 모듈을 가져올 수없는 것 같습니다.

내 setup.py는 GUI.py 및 라이브러리 디렉토리와 동일한 디렉토리에 있습니다.

저는 cx_Freeze-4.3.3이 설치된 Windows 7 노트북에서 실행하고 있습니다.

파이썬 3.4가 설치되어 있습니다.

도움이 되시면 감사하겠습니다.

+0

고정 출력을 게시 할 수 있습니까? 또한, 이것이 중요한지는 모르겠지만'options = { "build.exe": build_exe_options}'는'options = { "build_exe": build_exe_options}'일까요? –

답변

0

packages에서 Library (재미있는 이름)이 작동하지 않으면 해결 방법으로 includes 목록에 넣을 수 있습니다. 이것은 당신이 어쩌면이 작동하려면 명시 적으로 같은 매 서브 모듈을 포함합니다 : 들어

includes = ['Library', 'Library.submodule1', 'Library.sub2', ...] 

include_files 당신이 전체 (상대) 경로와 각 파일을 추가해야합니다. 디렉토리는 작동하지 않습니다. sys.path.insert(0, '.') 같은 경우 뭔가에

from glob import glob 
... 
include_files = ['GUI.py','HTML','Users','E.icns', 'Graphs'], 
include_files += glob('Tests/*/*') 
... 

또는 sys.path.insert(0, '..')은 도움이 될 수 있습니다

당신은 물론이처럼 include_files에 경로를 추가 할 os.listdir()의 사용 또는 glob 모듈을 만들 수 있습니다.