PDA

Visualizza la versione completa : [PYTHON] Includere in un eseguibile un programma composto da più file .py


[D]ottor
27-01-2007, 17:28
Ragazzi ho un programma composto da più file .py

Ho una directory chiamata /librerie/ come faccio ad includere tutti i file presenti in quella dir? (che vengono utilizzati dal programma)

grazie

XWolverineX
27-01-2007, 21:06
Se tu li importi nel tuo file principale basta compilare solo quello.

billiejoex
27-01-2007, 23:59
Esatto, se poi vuoi creare più file exe devi specificarlo nell'argomento console/windows.
Prendi esempio da questo setup.py:



# Win32Compile.py
# soicmp project v0.5

import os
import sys
import py2exe
import glob
from distutils.core import setup

# go to root directory (cd ..)
root = os.path.split(os.getcwd())[0]
sys.path.append(root)
os.chdir(root)

__pname__= "soicmp"
__ver__ = "v0.5"

platforms = {
'nt': 'win32',
'ce': 'win32',
}
type = platforms.get(os.name)
if type != 'win32':
print "This script is only for use on Win32."
sys.exit()

# --------------------------------------------------------------


# console executable (== server.py)
setup(console=[
{"script": "server.py",
"dest_base": "server",
"icon_resources": [(1, "soicmp.ico")]},

# console executable (== client.py)
{"script": "client.py",
"dest_base": "client",
"icon_resources": [(1, "soicmp.ico")]}],

# background executable (== serverw.pyw)
windows=[
{"script": "serverw.pyw",
"dest_base": "serverw",
"icon_resources": [(1, "soicmp.ico")]
}
],

# shared library name (default: 'library.zip')
zipfile="library.zip",

# opts
options={
"py2exe": {
"dist_dir": "[w32-bin]-%s_%s" %(__pname__, __ver__),
"optimize": 2,
"ignores": None,
"includes": ["encodings", "encodings.*"]
}
},

# files
data_files=[
("",["LICENSE.TXT",
"TODO.TXT",
"HISTORY.TXT",
"README.TXT"]),
("doc", glob.glob("doc\\*txt")),
("doc", glob.glob("doc\\*html")),
("doc\\soicmp_files\\", glob.glob("doc\\soicmp_files\\*")),
],
)

# delete "build" directory generated by py2exe
try:
os.system("rmdir /S /Q build")
except:
pass

[D]ottor
28-01-2007, 02:30
allora mi spiego meglio la gerarchia delle cartelle della mia applicazione è fatta cosi

/main.py
/app.py
/check.py
/librerie/__init__
/librerie/controllo.py
/librerie/connessione.py
/librerie/test.py


ora il file di avvio è /main.py che include /librerie/connessione.py e /librerie/controllo.py ma all'interno del programma ci sono altri file...come /app.py che include /librerie/test.py quindi il file "principale" non include tutte le librerie...
come potrei fare?

P.S. Ho provato a fare tutto dal primo file ma mi da errore, mi dice che non trova il modulo...

grazie mille

[D]ottor
28-01-2007, 03:36
ragazzi ho trovato l'inghippo...
se dentro uno script metto

from librerie import *


l'.exe mi darà sempre errore e dira che il modulo non esiste richiamato non esiste

se invece faccio

from librerie import controllo

lo script funziona perfettamente e riconosce da solo le dipendenze, proprio come avete detto voi.....il problema stà quindi in quel asterisco....non c'è un modo per risolvere questo problemino??? ora i file sono 3 e quindi tutto sommato non c'è problema nel fare l'import ma se il programma diventa grande???

Grazie :ciauz:

Loading