2017-12-17 34 views
3

내 프로그램이 아나콘다 스파이더에서 작동합니다. 그러나 동결 후에는 xgboost 및 pandas가있는 위젯을 제외하고 tkinter 모듈을 사용하는 모든 위젯이 작동합니다. 오류가 표시되지 않고 빌드가 작동했지만 버튼이 작동하지 않고 위젯이 표시되지 않습니다.txinter가있는 cxfreeze 위젯 xgboost가 표시되지 않지만 오류가 없습니다.

내 setup.py 파일에서 xgboost를 가져 오려고했지만 tkinter가있는 다른 모든 위젯이 제대로 작동하지 않았습니다. 그래도 오류는 없습니다. 이 문제를 경험하거나 해결 한 사람이 있습니까?

다음은 가장 효과가있는 작업입니다. 이것은 다른 위젯이 tkinter에서 작동하지만 xgboost 및 pandas에서 작동하지 않을 때의 나의 setup.py입니다.

from cx_Freeze import setup, Executable 
import sys 
import os 

includes = [] 
include_files = [r"C:/Users/USER/Anaconda3/DLLs/tcl86t.dll", 
     r"C:/Users/USER/Anaconda3/DLLs/tk86t.dll", 
     r"C:/Users/USER/SAMPLE/xgboost_USE.model", 
     r"C:/Users/USER/SAMPLE/P1.ico"] 
os.environ['TCL_LIBRARY'] = "C:/Users/USER/Anaconda3/tcl/tcl8.6" 
os.environ['TK_LIBRARY'] = "C:/Users/USER/Anaconda3/tcl/tk8.6" 
base = 'Win32GUI' if sys.platform == 'win32' else None 


setup(name=application_title, version='1.0', description='SAMPLE', 
     options={"build_exe": {"includes": includes, "include_files":     
     include_files}},executables= 
     [Executable(r'C:/Users/USER/SAMPLE/sample.py', base=base)]) 

도와주세요.

+0

터미널을 통해 응용 프로그램을 실행 해보면 오류가 표시됩니다. 또한 어떤 플랫폼에서 작업하는지 언급 해주십시오. – Simon

+1

파이썬을 사용하고 있습니다. 메인 프로그램을 실행했을 때 anaconda python 콘솔에 오류가 없지만 위젯 중 하나를 동결 한 후에 표시되지 않습니다. xgboost가있는 것. –

답변

0

나는 xgboost에 대한 경험이 없지만, 당신이 명시 적으로 numpy를 포함시켜야 할 팬더가 얼어 붙었을 때를 안다. 내가 가지고있는 설치 파일을 공유 할 것입니다. 팬더 (그리고 내가 생각하는 것처럼 삭제할 수있는 다른 것들)를 가지고 있습니다.

import sys 
import cx_Freeze 
import os.path 
import scipy 

base = None 

if sys.platform == 'win32': 
    base = "Win32GUI" 

#This part may depend on where your installation is 
#This part is essential to copy the tkinter DLL files over 
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__)) 
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6') 
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6') 
os.environ['REQUESTS_CA_BUNDLE'] = r'C:\ProgramData\Anaconda3\Lib\site-packages\botocore\vendored\requests\cacert.pem' 


executables = [cx_Freeze.Executable("test.py", base=base)] 
addtional_mods = ['numpy.core._methods', 'numpy.lib.format'] 

packages = ["idna", "numpy", "boto3", 'boto3.s3.transfer', 'boto3.s3.inject', 'multiprocessing', "xlwt", 'numpy.core._methods', 'pandas'] 
options = { 
    'build_exe': { 

     'include_files':[ 
      os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'), 
      os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), 
      os.path.dirname(scipy.__file__), 
      r'C:\ProgramData\Anaconda3\Lib\site-packages\botocore\vendored\requests\cacert.pem', 
      r'C:\ProgramData\Anaconda3\Lib\site-packages\botocore', 

     ], 
     'includes': addtional_mods, 
     'packages':packages, 
    }, 

} 

cx_Freeze.setup(
    name = "Test", 
    options = options, 
    version = "1.0.0.0", 
    description = 'Test', 
    executables = executables 
) 
+0

고맙습니다. xgboost를 패키지로 추가했지만 모듈을 찾을 수 없습니다. 또한, xgboost가 작동하지 않는 경우에도 위젯이 표시되어야합니다. 하지만 나는 다른 위젯과 함께 tkinter를 사용했으며 잘 작동합니다. 나는 더 이상 무엇을 해야할지 모른다. –

+0

또한 주 프로그램 #에서 pandas.api.types import CategoricalDtype #을 사용했습니다. # setup.py의 #pandas # 패키지와는 별도로 명시 적으로 포함시켜야합니까? –

+0

xgboost를 찾을 수 없다면 동결하려고하는 동안 분명히 문제가 될 것입니다. 팬더에 관해서는 팬더와 애착 관련 항목이있는 한 addtional_mods = [ 'numpy.core._methods', 'numpy.lib.format'] 및 packages = [ 'numpy', 'numpy. core._methods ','pandas '] 작동해야합니다. – Gardener85