2012-04-04 2 views
3

cx_Freeze를 사용하여 기본 exe를 만들려고합니다. numpy가없는 .py 프로그램에서 작동하지만 numpy로 올바르게 만든 프로그램을 얻을 수 없습니다.Python을위한 Numpy로 cx_Freeze exe 만들기

* 문제를 해결하는 방법에 대한 아이디어가 있습니까? 내 setup.py에 포함해야 할 것이 있습니까?

나는 말한다 EXE 파일을 실행 갈 때 :

  c:\Python32\Scripts\dist>Assignment4_5.exe 
      Traceback (most recent call last): 
    File "C:\Python32\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2 
    7, in <module> 
    exec(code, m.__dict__) 
    File "c:\Python32\Assignment4_5.py", line 6, in <module> 
    import numpy as np 
    File "C:\Python32\lib\site-packages\numpy\__init__.py", line 137, in <module> 
    from . import add_newdocs 
    File "C:\Python32\lib\site-packages\numpy\add_newdocs.py", line 9, in <module> 

    from numpy.lib import add_newdoc 
    File "C:\Python32\lib\site-packages\numpy\lib\__init__.py", line 17, in <modul 
    e> 
    from .npyio import * 
    File "C:\Python32\lib\site-packages\numpy\lib\npyio.py", line 6, in <module> 
    from . import format 
    ImportError: cannot import name format 

    c:\Python32\Scripts\dist> 

Setup.py : 이것은 나 cx_Freeze에서 문제를

from cx_Freeze import setup, Executable 

    includeDependencies = [] 

    setup(
     name = "Assignment4_5PythonExe", 
     version = "0.1", 
     description = "Sort Methods", 
     executables = [Executable("Assignment4_5.py")] 
     ) 
+1

해보십시오 pyInstaller 중에 다음 docs

에서 참조로 여기에 귀하의 솔루션입니다. numpy, matplotlib 등의 라이브러리는 두통이 훨씬 적습니다. i.m.o. –

+2

@JoeKington :하지만 PyInstaller는'c : \ Python32'에서 작동하지 않습니다 ... @TMan : 모듈'numpy.lib.format'을 복사하지 못하는 것 같습니다. 나는 그것이 왜 있는지 보겠습니다. –

+0

@ThomasK - 좋은 지적입니다. 나는 그가 python3을 사용하는 것을 놓쳤다. –

답변

2

- 자동는 복사해야 검색하지 않습니다 모듈 numpy.lib.format. development version에서 이미 수정되었으므로 시도해 볼 수있는 위치에 있으면 작동 할 것입니다.

그렇지 않으면 setup.pynumpy.lib.format을 포함시켜야한다고 지정해야합니다. 라인은 다음과 같이 보일 것입니다 :

options = {"build_exe": {"packages": ["numpy.lib.format"]}}, 

the documentation를 참조하십시오.

2

Numpy는 cx_Freeze에 다소 혼란스러워 보이므로 명시 적으로 선언해야합니다. 대신

from cx_Freeze import setup, Executable 

    build_exe_options = {"packages": ["numpy"]} 

    setup(
     name = "Assignment4_5PythonExe", 
     version = "0.1", 
     description = "Sort Methods", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("Assignment4_5.py")] 
     )