2017-09-29 4 views
0

다음 라이브러리를 사용하여 Expiration_Report.py라는 .py 스크립트를 작성했습니다 : pandas, numpy. 이 코드는 Spyder (Python 3.6)에서 실행될 때 완벽하게 실행됩니다.(cx_Freeze를 사용하는 Python3.6) Exe는 팬더, numpy 애플리케이션을 실행하지 않습니다

import sys 
    from cx_Freeze import setup, Executable 

    # Dependencies are automatically detected, but it might need fine tuning. 
     build_exe_options = {"packages": ["os"], 
       "excludes": ["tkinter"]} 

    # GUI applications require a different base on Windows (the default is for a 
    # console application). 
    base = None 
    if sys.platform == "win32": 
     base = "console" 


    setup( name = "my prog", 
     version = "1.0", 
     description = "My application!", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("Expiration_Report.py", base = base)]) 

을 :

(모든 것을 아나콘다를 사용하여)

나는 다음 Expiration_Report.exe에 Expiration_Report.py을 변환하기 위해 다음 코드로 'setup.py'라는 또 다른 평 파일을 생성 그런 다음 명령 프롬프트에서 다음과 같이 씁니다.

python setup.py build 

오류없이 빌드됩니다. 빌드 폴더는 .exe 파일과 함께 사용할 수 있습니다. 그러나 빌드 폴더에서 .exe 파일을 실행할 때 아무 일도 발생하지 않습니다.

import pandas as pd 
    import numpy as np 

    df = pd.read_excel('C:/Users/Salman/Desktop/WIP Board - 007.xlsx',       index_col=None, na_values=['NA']) 

    df.columns = df.iloc[12] 
    df.columns 

    df.shape 

    df = df.dropna(axis=1, how = 'all') 
    df 

    df.columns 

    df1 = df.copy() 
    df1 = df1.iloc[13:] 
    df1 

    df1 = df1.dropna(axis=1, how = 'all') 
    df1.shape 

    from datetime import datetime 
    print(str(datetime.now())) 

    df2 = df1.copy() 
    df2["Now_Time"] = pd.Series([datetime.now()] * (13+len(df1))) 

    df2["Now_Time"] 

    df2 

    df2.fillna(value='NaN') 

    df2 = df2.dropna(how='any') 

    df2.shape 

    df3 = df2.copy() 
    df3 = df3[df3.Size>0] 
    df3['Lot Expiration Date'] = pd.to_datetime(df3['Lot Expiration Date']) 

    df3['Days_Countdown'] = df3[['Lot Expiration Date']].sub(df3['Now_Time'], axis = 0) 

    df3.dtypes 

    df3['Hours_Countdown'] = df3['Days_Countdown']/np.timedelta64(1, 'h') 

    df3 = df3.sort_values('Hours_Countdown') 

    df_expiration = df3[df3.Hours_Countdown<12] 

    df_expiration['Hours_Countdown'].astype(int) 
    df_expiration 

    df_expiration.to_excel('C:/Users/Salman/Desktop/WIP Board - 000.xlsx', sheet_name = 'Sheet1') 

cs_Freeze에서 exe 파일을 작성하는 방법이 올바른지 : 여기

는 Expiration_Report.py 스크립트의 코드입니다. HelloWorld.py라는 간단한 스크립트를 exe로 변환 했으므로 제대로 작동했습니다. 그것은 팬더 라이브러리를 가져 오지 않고 exe를 종료합니다.

답변

0

아마도 패키지 목록에 팬더와 numpy를 추가해야 할 수도 있습니다. cx_freeze는 필요한 모든 패키지를 찾는 데 약간의 혼란을 줄 수 있습니다.

build_exe_options = {"packages": ["os", "numpy", "pandas"], 
      "excludes": ["tkinter"]} 
0

그것은이 나 cx_Freeze 5, 6 doesn'work (내가 알기로,이 최신 버전입니다)합니다 (setu.py 파일의 패키지를 포함)을 보인다. 나는 패키지를 추가하는 것과 같은 문제와 내가 여기 따라 왔던 조언을했다. 문제를 일으키는 것 같아요. 아주 간단한 testscript에 import numpy을 넣어 테스트 할 수 있으며, 멈 추면 충돌이 발생하는 것을 볼 수 있습니다.

나를 위해이 솔루션은 파이썬 3.4 일했다,하지만 난 그것을 파이썬 3.6에서 작동하는지 의심 : 나는 나 cx_Freeze을 제거하고 pip install cx_Freeze==4.3.4를 통해 나 cx_Freeze 4.3.4을 다시 설치 한 후 일했다.