2012-04-04 7 views
3

cx_Freezeを使って基本的なexeファイルを作成しようとしています。これはnumpyを持たない.pyプログラムで動作しますが、numpyで正しく作られたプログラムを得ることはできません。Numpy for Pythonで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のを試してみてください。 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

ナンシーは、cx_Freezeにやや混乱しているようですので、明示的に宣言する必要があります。ここでdocs

で言及されているようにあなたのソリューションです:

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")] 
     ) 
関連する問題