7

cx_Freeze を使用して基本的な exe を作成しようとしています。numpy を持たない .py プログラムでは機能しますが、numpy で正しく作成できません。

*これを修正する方法についてのアイデアはありますか? 私の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:

   from cx_Freeze import setup, Executable

   includeDependencies = []

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

3 に答える 3

5

これは cx_Freeze のバグです。モジュールをコピーする必要があることを自動的に検出しませんnumpy.lib.format開発版ではすでに修正されているので、試してみる立場ならうまくいくはずです。

numpy.lib.formatそれ以外の場合は、に含める必要があることを指定する必要がありますsetup.py。行は次のようになります。

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

ドキュメントも参照してください。

于 2012-04-04T21:10:29.347 に答える
0

最近、cx_freeze 6.1 と Python 3.5.4 を使用してこの問題に遭遇しました。実行時の問題を解決するために、実行時にシステム パスに numpy lib パスを追加する必要がありました。誰にも役立つ場合は、関連するコードスニペットを次に示します。

if __name__ == '__main__':
# The frozen app needs the numpy path added to it's file.
try:
    this_file = __file__
except NameError:
    this_file = sys.argv[0]
    sys.path.insert(0, str(Path(this_file).absolute().parent / "lib" / "numpy"))
于 2020-04-02T14:01:08.407 に答える