質問

埋め込みWebサーバー(Tornado)、データベース(SQLATSを使ったSQLalchemy)、および全体のShabangを備えた単純なWebアプリケーションを書きました。実行できる単一のEXEを使用して、単一の自己完結型ディレクトリにまとめてバンドルします。展開シナリオは絶対にワンクリックインストールを要求し、このように実行されます。

PY2EXEまたはPYInstallerがコードをバンドルするようにしようとしたことを絶対に失敗しました。この問題は、ディレクトリ構造とレイアウトで直接関係します。これは次のとおりです。ディレクトリレイアウトを大部分に変更したくありません。誰かが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/
.

役に立ちましたか?

解決

まあ、私自身の質問に答えて申し訳ありません。しかし、多くのグーグルと試用とエラー、私はこの働きを得ることができました。私はPY2EXEを使って株式会社+ Sqlalchemy + SQLiteが似た問題を抱えている人のために、以下のようにしてください。Python Setup.py Py2exeを実行すると、最後の行はいくつかのモジュールが欠落していると言及しています。しかし、これはプログラムの実行に影響を与えませんでした。

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

これは私の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,
    )
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top