6

Вопрос по numpy, cx-freeze, python – undefined

Я пытаюсь создать простой 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")]
        )
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • @JoeKington: Но PyInstaller не будет работать сc:\Python32... @TMan: похоже, что он не может скопировать модульnumpy.lib.format, Я посмотрю, почему это так.

    от Thomas K
  • @ThomasK - Хороший вопрос. Я пропустил, что он использовал python3.

    от Joe Kington
  • Попробуйте вместо этого pyinstaller. Он будет обрабатывать библиотеки, такие как numpy, matplotlib и т. Д., С гораздо меньшей головной болью, т.е.

    от Joe Kington
  • Я хотел бы иметь Python 3, тогда Py2exe решил бы мою проблему ... К счастью, застрял с 2 для моей проблемы ...

    от ntg
  • 5

    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")]
            )
    

  • 5

    Это ошибка в cx_Freeze - он не определяет автоматически

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

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

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

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