Domanda

Ho scritto una semplice applicazione Web con server Web incorporato (Tornado), database (SQLalchemy utilizzando SQLite per ora) e l'intero Shabang.Vorrei aggiustare tutto in una singola directory autonoma con un singolo exe che può essere eseguito.Lo scenario di implementazione richiede assolutamente un clic di un clic ed esegui come questo.

Ho assolutamente fallito nel tentativo di ottenere Py2exe o Pyinstaller per far passare il mio codice.Il problema ha da fare direttamente con la struttura e il layout di directory, che è il seguente.Non voglio cambiare il layout di directory a molto.Qualcuno può suggerire come posso ottenere questo con Py2exe o Pyinstaller o qualsiasi altro strumento adatto?

project/
|-> main.py

|-> libs/
    |-> tornado/ (The full git rep as a submodule)
        |-> tornado/ (The actual package)
    |-> sqlalchemy/

|-> src/
    |-> support-1.py
    |-> support-2.py

|-> static/
    -> js/
    -> img/
    -> css/

|-> templates/
.

È stato utile?

Soluzione

Beh, mi dispiace rispondere alla mia domanda.Ma molto googling e prove ed errori, sono riuscito a far funzionare questo.Sto incollando il mio setup.py (per Py2exe) sotto per chiunque abbia problemi simili ottenendo Tornado + SQLalchemy + SQLite che lavora con Py2exe.Quando eseguo Python Setup.py Py2exe, le ultime righe menzionano che manca il modulo.Ma questo non ha avuto alcun impatto sull'esecuzione del programma.

> "['Carbon', 'Carbon.Files', '_curses', '_scproxy', 'django.utils',
> 'dummy.Process', 'pkg_resources', 'pysqlite2', 'simplejson',
> 'sqlalchemy.cprocessors', 'sqlalchemy.cresultproxy', 'tornado.epoll']"
.

Ecco il mio setup.py:

import glob, os, sys

curr_dir = os.path.abspath('.')
pare_dir = os.path.abspath('..')

sys.path = [os.path.join(pare_dir, 'py2exe-0.6.9', 'py2exe'),
           os.path.join(curr_dir, 'src'),
           os.path.join(curr_dir, 'libs', 'tornado'),
           os.path.join(curr_dir, 'libs', 'sqlalchemy'),
           os.path.join(curr_dir, 'libs')] + sys.path


from distutils.core import setup
import py2exe

data_files = [('', ['config.json']),
              ('db', ['db/prs.db']),
              ('templates',      glob.glob('templates/*.*')),
              ('static',         glob.glob('static/*.*  ')),
              ('static/css',     glob.glob('static/css/*.*')),
              ('static/js',      glob.glob('static/js/*.*')),
              ('static/js/libs', glob.glob('static/js/libs/*.*')),
              ('static/img',     glob.glob('static/img/*.*')),
              ]

setup(console=['prs.py'], options={
    'py2exe' : {
        'includes' : ['demjson'],
        'packages' : ['sqlalchemy.dialects.sqlite'],
        }},
    data_files=data_files,
    )
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top