AttributeError: объект «NoneType» не имеет атрибута «разделить»?

Я пытаюсь сделать исполняемый скрипт с помощью py2exe.

Вот мой код setup.py:

import cx_Freeze

executables = [cx_Freeze.Executable("Email.py")]

cx_Freeze.setup(
    name="Email",
    options={"build_exe": {"packages":["pygame"],
                           "include_files":["aura.png"]}},
    executables = executables

    )

И я запускаю это из своего cmd, и вот выполнение:

G:\Grade 12 Project>python setup.py build running build running build_exe creating directory build\exe.win32-2.7 copying C:\Python27\lib\site-packages\cx_Freeze\bases\Console.exe -> build\exe.win32-2.7\Email.exe copying C:\WINDOWS\SYSTEM32\python27.dll
-> build\exe.win32-2.7\python27.dll Traceback (most recent call last):   File "setup.py", line 9, in <module>
    executables = executables   File "C:\Python27\lib\site-packages\cx_Freeze\dist.py", line 349, in setup
    distutils.core.setup(**attrs)   File "C:\Python27\lib\distutils\core.py", line 151, in setup
    dist.run_commands()   File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)   File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()   File "C:\Python27\lib\distutils\command\build.py", line 127, in run
    self.run_command(cmd_name)   File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
    self.distribution.run_command(command)   File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()   File "C:\Python27\lib\site-packages\cx_Freeze\dist.py", line 219, in run
    freezer.Freeze()   File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 623, in Freeze
    self._FreezeExecutable(executable)   File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 225, in
_FreezeExecutable
    self._AddVersionResource(exe)   File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 165, in
_AddVersionResource
    trademarks = exe.trademarks)   File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 759, in
__init__
    parts = version.split(".") AttributeError: 'NoneType' object has no attribute 'split'

Также в моей папке сборки, когда я запускаю Email.exe, я получаю эту ошибку:

ImportError: No module named __startup__

person White Shadow    schedule 07.12.2016    source источник
comment
Я думаю, вы также должны указать номер версии. Он пытается разбить строку типа x.x.x, но, поскольку вы ее не предоставили, выдает ошибку.   -  person Mohammad Yusuf    schedule 07.12.2016
comment
@amin, это тривиальное редактирование.   -  person White Shadow    schedule 07.12.2016
comment
@MohammadYusufGhazi, номер версии?   -  person White Shadow    schedule 07.12.2016
comment
Внутри функции настройки. Проверьте это: cx-freeze.readthedocs.io/en/latest/distutils.html   -  person Mohammad Yusuf    schedule 07.12.2016
comment
@MohammadYusufGhazi, извините. Я вас не понимаю.   -  person White Shadow    schedule 07.12.2016


Ответы (1)


Как сказал @Mohammad Yusuf Ghazi, вам нужно передать параметр version='x.y.z' в вызов установки, например:

cx_Freeze.setup(
    name="Email",
    options={
        "build_exe": {"packages":["pygame"],
        "include_files":["aura.png"]}},
    executables = executables,
    version='1.0.0'
)

Недопустимо вызывать setup без номера версии.

Вы пытаетесь запустить это из командной строки или из графического интерфейса? Если из графического интерфейса вам может потребоваться вызвать Executable("Email.py", base="Win32GUI") согласно документации для того, чтобы это работало, так что может быть проблемой. Но было бы полезно увидеть полную трассировку.

person daphtdazz    schedule 07.12.2016