cx_freeze выдает ошибки ввода и файла

Я видел похожие проблемы на разных форумах, но ни одна из них к этому не относится.

У меня есть два файла, один main.py и основная программа xlsKonverter.py, которые я хочу использовать cx_freeze для компиляции в файл .exe. При создании .exe я получаю это сообщение об ошибке:

pywintypes.error: (110, 'EndUpdateResource', 'The system cannot open the device or file specified.')

И при попытке запустить (несколько законченную) сборку выскакивает это исключение:

введите описание изображения здесь

Я проверил весь свой код, поэтому ошибки нет. Он должен быть где-то в установочном файле. Я ошибся? И что было бы хорошим исправлением?


'setup.py'

Это моя настройка cx_freeze

import sys
from cx_Freeze import setup, Executable

build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}

packages = ['xlrd', 'glob', 'sys']
includes = ['xlsKonverter']
includefiles = []

eggsacutibull = Executable(
    script = "main.py",
    base = 'Console',
    initScript = None,
    targetName = "main.py",
    compress = True,
    copyDependentFiles = True,
    appendScriptToExe = False,
    appendScriptToLibrary = False,
    icon = None
    )

setup(  name = "Table Converter",
        version = "0.3",
        author = "Jørgen Sirhaug",
        description = "Makes a .csv file from designated Wire List.",
        options = {"build_exe": build_exe_options},
        executables = [eggsacutibull]
        )

'main.py'

, моя основная функция

import xlsKonverter as xk
import os.path
import sys

def main():

fileList = xk.getAllFileURLsInDirectory("C:\\Users\\Jørgen\\Dropbox\\Aker\\Wire Lists\\")
if len(fileList) < 1:
    print("ERROR! No files in directory!\nDoes the specified folder excist?")
else:
    print('')
    for i in range(len(fileList)):
        try:
            sheet = xk.getWorksheet(fileList[i])
            tagCols = xk.automaticFirstRow(sheet)
            pairedList = xk.pairCells(sheet, tagCols)
            csvString = xk.makecsv(pairedList)#, tagCols)
            xk.writeToFile(csvString, i)
        except:
            print("ERROR!\n" + fileList[i] + '\nThis file does not excist!')

main()

и импорт из xlsKonverter.py

import xlrd
import glob
import sys

person DoTheGenes    schedule 29.07.2013    source источник


Ответы (1)


Попробуйте поместить объявление кодировки в свой файл main.py. Этот комментарий выглядит так:

# encoding: cp1252

Возможно, вам придется изменить последний бит в зависимости от того, как вы сохраняете файл. Если он создан в Windows, cp1252 является нормальным для Западной Европы. В Linux и Mac чаще встречается utf8.

person Thomas K    schedule 29.07.2013
comment
У меня #-*- coding: utf-8 -*- в качестве первой строки в файле main. Есть ли разница в написании #-'- coding и # encoding? - person DoTheGenes; 30.07.2013
comment
Это должно сработать. Что произойдет, если вы сделаете tokenize.detect_encoding(open("main.py", "rb").readline)? - person Thomas K; 30.07.2013
comment
Кроме того, open('main.py', 'rb').read().decode('utf-8') вызывает ошибку? - person Thomas K; 30.07.2013
comment
tokenize? Я не слышал об этой функции. И нет, ни один из них не работал. tokenize не существует, а open() просто выдает ошибку 404. - person DoTheGenes; 30.07.2013
comment
tokenize - это модуль, вам необходимо импортировать его, прежде чем использовать. А ошибка 404 - что? Где ты это делаешь? 404 - это код ошибки HTTP, который совершенно не связан с открытием файла в Python. - person Thomas K; 31.07.2013