Вопрос по cx-freeze, python, numpy – Создание exe cx_Freeze с Numpy для Python

6

Я пытаюсь создать простой exe с помощью cx_Freeze. Он работает для программ .py, в которых нет numpy, но я не могу сделать одну из них правильно с помощью 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")]
        )
Попробуйте вместо этого pyinstaller. Он будет обрабатывать библиотеки, такие как numpy, matplotlib и т. Д., С гораздо меньшей головной болью, т.е. Joe Kington
@JoeKington: Но PyInstaller не будет работать сc:\Python32... @TMan: похоже, что он не может скопировать модульnumpy.lib.format, Я посмотрю, почему это так. Thomas K
@ThomasK - Хороший вопрос. Я пропустил, что он использовал python3. Joe Kington
Я хотел бы иметь Python 3, тогда Py2exe решил бы мою проблему ... К счастью, застрял с 2 для моей проблемы ... ntg

Ваш Ответ

2   ответа
5

кажется, немного запутывает 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")]
        )
Error: User Rate Limit Exceeded
5

что должен скопировать модульnumpy.lib.format, Это уже исправлено вверсия для разработкиТак что, если вы можете попробовать это, это должно сработать.

В противном случае вам нужно будет указать, чтоnumpy.lib.format должен быть включен в вашsetup.py, Линия будет выглядеть примерно так:

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

Смотрите такжедокументация.

Error: User Rate Limit Exceeded

Похожие вопросы