Pyinstaller: создание исполняемого файла с несколькими зависимостями - "TypeError"

У меня есть довольно большое wx-приложение, которое я создал, и я хотел бы скомпилировать его в исполняемый файл. Я делал это раньше, однако, процесс стал более сложным, потому что я работаю с несколькими другими зависимостями (пакетами), и моя программа состоит из нескольких файлов.py. Прежде чем опубликовать код, я опишу исходное сообщение об ошибке.

Сообщение об ошибке

Я перехожу в каталог, где сохранены все мои файлы скриптов, и выполняю следующую команду в окне приглашения (cmd):

pyinstaller -F AMI_GUI.py

Pyinstaller изначально работает нормально, но в конце процесса я получаю эту ошибку:

Ошибка типа: итерация по непоследовательности

Я разместил снимок экрана, чтобы лучше показать эту ошибку.

Первая попытка Pyinstaller получает ValueTypeError

Что интересно, что происходит дальше, я пытаюсь снова запустить ту же команду, 'pyinstaller -F AMI_GUI.py'. Но на этот раз ошибка не возникает, вместо этого процесс завершается, и в моем каталоге dist мой исполняемый файл создан. Я также могу запустить исполняемый файл.

Запустите Pyinstaller во второй раз. Нет ошибок

Кто-нибудь сталкивался с этой проблемой раньше при компиляции приложений с помощью pyinstaller? Я еще не провел обширного тестирования исполняемого файла, но я беспокоюсь о том, чтобы доверять ему, потому что процесс pyinstaller не удался в первый раз.

Я разместил часть своего кода, которая показывает зависимости и часть моего кода:

AMI_GUI.py

from sqlalchemy import create_engine, Column, Integer, String, DateTime, Float, UnicodeText, VARCHAR, NVARCHAR, TEXT, DATE, distinct, ForeignKey, Table,or_,and_
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
import math
import wx
import wx.lib.mixins.listctrl  as  listmix
from ObjectListView import ObjectListView, ColumnDefn
from ObjectListView import EVT_CELL_EDIT_STARTING
from ObjectListView import EVT_CELL_EDIT_FINISHING
import os
import time

from wigets import File_Manager,Date_Filter,Log_In,EVT_LOGIN
from AMI_component import engine
from AMI_component import Exception,Meter,Transformer,except_heading,meter_heading
import csv

## Link to Database
Session = sessionmaker( bind=engine )                   ## Import the database engine from component file
session = Session()                                     ## Create session to database

AMI_components.py

import os,math,random,string,operator,logging,csv
from itertools import count

from sqlalchemy import create_engine, Column, Integer, String, DateTime, Float, UnicodeText, VARCHAR, NVARCHAR, TEXT, DATE, distinct, ForeignKey, Table
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
from AMI_subroutine import getFiles,incident_filt,getDB,get_manf,dayMonth,check_voltage,violation_filt,rec,get_dateTime
admin_dir = "C:\project\AMI"
# print os.getcwd()
os.chdir(admin_dir)

engine = create_engine("sqlite:///./AMI_case.db", #"oracle://rai:raisys@njnwkora18_oraa.db.pseg.com",
                       echo=False)

Session = sessionmaker( bind=engine )
session = Session()

Не уверен, поможет ли этот код, но он показывает, какие операторы импорта я использовал... некоторые из основных файлов, которые я запускаю с помощью команды pyinstall, - AMI_GUI.py.

1 ответ

Решение

Немного погуглил, это определенно похоже на ошибку в pyinstaller.

Смотрите: https://groups.google.com/forum/

https://github.com/pyinstaller/pyinstaller/issues/964

Другие вопросы по тегам