PDA

View Full Version : [Python] Conversione di più file in unico eseguibile.


Antinor
21-02-2013, 19:16
Salute a tutti Voi !

Perdonatemi innanzitutto se il mio problema potrà sembrare banale, ma è la prima volta che mi avvicino a questo linguaggio di programmazione.
L'associazione di Volontariato presso la quale presto servizio, mi ha chiesto di creare un solo ed unico file eseguibile essendo in possesso di uno script in Python. (Script è corretto?).
Nello specifico si tratta di un questionario le cui domande e risposte si trovano su un altro file .txt
Pertanto mi trovo :

Questionario.py
quesiti.txt

Ovviamente prima di scrivere su questo poliedrico e spettacolare Forum ho cercato in rete ed ho trovato il famoso py2exe. Ne ho studiato le caratteristiche e i modi di utilizzo ed infine l'ho provato.

Dopo aver creato il file setup.py ho eseguito il comando : python setup.py py2exe e tutto è andato bene a parte il "piccolo dettaglio" che se tento di eseguire il file .exe non visualizzo ne le domande ne le risposte.
Sono certo che devo includere nella compilazione il file .txt ma non so come fare.
Inoltre se prendo il solo file .exe e tento di eseguirlo in altro PC, noto che si apre la schermata DOS soltanto per pochi istanti per poi richiudersi immediatamente.

L'anomalia non si manifesta più se mi porto anche il file compresso "library.zip" creato da py2exe.
E' normale che mi serva anche questo file ? Io pensavo che il risultato finale fosse un solo file eseguibile.

Questo è il contenuto del file "setup.py" :

from distutils.core import setup
import py2exe

setup(console=['questionario.py']
)


Mentre questo è il contenuto del file "questionario.py" :

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
def NumRand():
import random
Insieme = range(1,1420,5)
rand = random.sample(Insieme, 10)
return rand

def Quesito(y):
from linecache import getline
FileRif = "quesiti.txt"
domanda = getline(FileRif, y)
risp1 = getline(FileRif, y+1)
risp2 = getline(FileRif, y+2)
risp3 = getline(FileRif, y+3)
controllo = getline(FileRif, y+4)
return domanda, risp1, risp2, risp3, controllo

def Pulisci():
import os, platform
if platform.system() == "Linux":
os.system("clear")
if platform.system() == "Windows":
os.system("cls")


import time
lista = NumRand()
x = 0
giusta = 0
sbagliata = 0
while x <= 9:
Pulisci()
question = lista[x]
gruppo = Quesito(question)
domanda = gruppo[0]
risp1 = gruppo[1]
risp2 = gruppo[2]
risp3 = gruppo[3]
controllo = gruppo[4]
print("\n\n\n\n----------------------------------------")
print domanda, '\n', risp1, risp2, risp3
ValOk = ["1","2","3"]
risposta = raw_input("Digita il numero corrispondente alla risposta che ritieni esatta: ")
if risposta in ValOk:
if int(risposta) == int(controllo):
print("\n\n******************")
print("*RISPOSTA ESATTA!*")
print("******************")
giusta = giusta + 1
time.sleep(2)
else:
print("\n\nRisposta errata! La risposta giusta era: \n" + gruppo[int(controllo)])
sbagliata = sbagliata + 1
time.sleep(6)
else:
print("\n\nATTENZIONE!!! Devi digitare un numero valido corrispondente alla risposta! (1,2,3)")
x = x - 1
time.sleep(2)

x = x+1
Pulisci()
print("\n\nHai dato: " + str(giusta) + " risposte corrette e ne hai sbagliate: " + str(sbagliata))
if int(giusta) <= int(sbagliata):
print("\n\nDevi ancora studiare un bel po'!")
time.sleep(2)
else:
print("\n\n**************")
print("*COMPLIMENTI!*")
print("**************")
print("\nHai buone possibilitÃ* di superare l'esame!\n\n")


Scusatemi nuovamente ma sono proprio nuovo a questo linguaggio.

Grazie e a presto !

cdimauro
22-02-2013, 08:34
Non ho mai provato questi sistemi di impacchettamento delle applicazioni Python, ma eventualmente puoi dare un'occhiata a PyInstaller.

demos88
22-02-2013, 12:57
potresti usare i tag [CODE]?
Il Python senza identazione non è python :asd:

Avevo provato per curiosità dei tool per generare exe da python, ma py2exe, oltre a non essere aggiornato da tempo (dal 2008 mi pare), supporta solo la grammatica del 2 e a me serviva la compatibilità con il 3.
Un tool che mi è sembrato funzionare è cx_freeze, esiste per diverse piattaforme e per diverse versioni del python.

Antinor
23-02-2013, 08:14
potresti usare i tag [CODE]?
Il Python senza identazione non è python :asd:

Fatto. Chiedo scusa.

Avevo provato per curiosità dei tool per generare exe da python, ma py2exe, oltre a non essere aggiornato da tempo (dal 2008 mi pare), supporta solo la grammatica del 2 e a me serviva la compatibilità con il 3.
Un tool che mi è sembrato funzionare è cx_freeze, esiste per diverse piattaforme e per diverse versioni del python.

Adesso provo. Grazie per la collaborazione !