ビルドしたかなり大きな wx アプリケーションがあり、それを実行可能ファイルにコンパイルしたいと考えています。以前にこれを行ったことがありますが、他のいくつかの依存関係 (パッケージ) を使用していて、プログラムが複数の .py ファイルで構成されているため、プロセスがより複雑になりました。コードを投稿する前に、最初のエラー メッセージについて説明します。
エラーメッセージ
すべてのスクリプト ファイルが保存されているディレクトリに移動し、プロンプト (cmd) ウィンドウで次のコマンドを実行します。
pyinstaller -F AMI_GUI.py
Pyinstaller は最初は問題なく動作しますが、プロセスの最後に次のエラーが発生します。
TypeError: 非シーケンスの反復
このエラーをよりよく示すために、スクリーン ショットを投稿しました。
興味深いのは、次に何が起こるかということです。同じコマンド「pyinstaller -F AMI_GUI.py」をもう一度実行してみます。しかし、今回はエラーは発生せず、代わりにプロセスが終了し、distディレクトリに実行可能ファイルが作成されました。実行可能ファイルを実行することもできます。
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()
このコードが役立つかどうかはわかりませんが、使用した import ステートメントを示しています... pyinstall コマンドで実行しているメイン ファイルの一部は AMI_GUI.py です。