2015-02-16 3 views
1

Я очень новой для cx_freeze, и я пытаюсь понять это немного лучше, у меня есть этот файл setup.py:Python cx_freeze 4.3.4: Настройка Имя_целевого_объекта приводит к ошибкам

import sys 
from cx_Freeze import setup, Executable 

# Dependencies are automatically detected, but it might need fine tuning. 
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} 

setup( name = "guifoo", 
     version = "0.1", 
     description = "My GUI application!", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("mypy.py", base="Console", targetName="hello")]) 

, который, если я удалить targetName = «привет», но он работает, но я не включаю его. Кто-нибудь знает, почему?

Это мой питон код:

# encoding: utf8 
import math 
print "Starting..." 
print math.sqrt(16) 
input("please press enter to exit...") 

После запуска питона setup.py сборки я получаю следующие ошибки:

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\hello 
copying C:\Windows\system32\python27.dll -> build\exe.win32-2.7\python27.dll 
Traceback (most recent call last): 
    File "setup.py", line 11, in <module> 
    executables = [Executable("mypy.py", base="Console", targetName="hello")]) 
    File "C:\Python27\lib\site-packages\cx_Freeze\dist.py", line 362, 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 232, in run 
    freezer.Freeze() 
    File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 621, in Freeze 
    self._FreezeExecutable(executable) 
    File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 211, in _FreezeExecutable 
    self._AddVersionResource(exe.targetName) 
    File "C:\Python27\lib\site-packages\cx_Freeze\freezer.py", line 150, in _AddVersionResource 
    stamp(fileName, versionInfo) 
    File "C:\Python27\lib\site-packages\win32\lib\win32verstamp.py", line 159, in stamp 
    h = BeginUpdateResource(pathname, 0) 
pywintypes.error: (2, 'BeginUpdateResource', 'The system cannot find the file specified.') 

Добавление EXE-файл на имя цели действительно решить эту

+1

Вы на Windows? Если это так, targetName может быть «hello.exe». Кстати, при задании технических вопросов, пожалуйста, не говорите, что это не работает - что * точно * не работает? Есть ли сообщение об ошибке? Что вы ожидаете, и как получается то, что вы получаете? –

+0

да спасибо Томас, больно приложите эти детали – Har

+0

вы могли бы поместить это в ответ, чтобы я мог его принять? – Har

ответ

2

Отмена в качестве ответа:

targetName является именем файла исполняемый файл, который он собирается создать. В Windows исполняемые файлы должны иметь расширение .exe, поэтому вам нужно установить его как 'hello.exe', а не только 'hello'.

2

Я столкнулся с этой проблемой с последней версией Cx_freeze.

Я обнаружил, что мне нужно изменить свой исполняемый вызов в файле setup.py, чтобы использовать относительный путь для каталога dist.

Изменения необходимы в setup.py

От

MyExe_Target_1 = Executable(
    # what to build 
    script = "main.py", 
    initScript = None, 
    base = None, 
    targetDir = r"dist", 
    targetName = "MyWindowsApp.exe", 
    compress = True, 
    copyDependentFiles = True, 
    appendScriptToExe = False, 
    appendScriptToLibrary = False, 
    icon = None 
    ) 

To:

MyExe_Target_1 = Executable(
    # what to build 
    script = "main.py", 
    initScript = None, 
    base = None, 
    targetDir = r".\\dist", # needs in Windows format relative to the working dir! 
    targetName = "MyWindowsApp.exe", 
    compress = True, 
    copyDependentFiles = True, 
    appendScriptToExe = False, 
    appendScriptToLibrary = False, 
    icon = None 
    ) 
+0

У меня была такая же ошибка только сейчас, и это было единственное исправление (в настоящее время принятый ответ недостаточен). Более того, у меня изначально не было «targetDir», кажется, что он явно нуждается в этом, определенном в 32-битной Windows (для 64-битного опускания он, похоже, работал). – brettb

Смежные вопросы