문제

Imbedded Web Server (Tornado), 데이터베이스 (SQLite를 사용한 SQLite를 사용한 SQLAThemy)와 Shabang 전체가있는 간단한 웹 응용 프로그램을 작성했습니다.실행할 수있는 단일 EXE가있는 단일 EXE를 사용하여 단일 자체 포함 된 디렉토리로 모든 것을 묶어보고 싶습니다.배포 시나리오는 한 번의 클릭 설치를 절대적으로 요구하고 다음과 같이 실행합니다.

PY2EXE 또는 PYINSELLER를 사용하여 내 코드를 번들로 가져 오려고 절대로 실패했습니다.문제는 다음과 같습니다. 이는 다음과 같습니다.디렉토리 레이아웃을 많이 변경하고 싶지 않습니다.누군가가 py2exe 또는 pyinstaller 또는 다른 적절한 도구로 이것을 어떻게 얻을 수 있는지 제안 할 수 있습니까?

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/
.

도움이 되었습니까?

해결책

글쎄, 내 질문에 답해서 죄송합니다.그러나 많은 Googling과 재판과 오류가 발생했지만, 나는이 일을 할 수있었습니다.Py2EXE로 작업하는 Tornado + SQLAlchemy + SQLite를 사용하면 비슷한 문제가있는 모든 사람을 위해 Setup.py (Py2EXE 용)를 붙여 넣습니다.python setup.py py2exe를 실행하면 마지막 줄이 일부 모듈이 누락되었음을 언급합니다.그러나 이것은 프로그램의 실행에 영향을 미치지 않았습니다.

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

여기에 내 설정이 있습니다 :

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,
    )
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top