単語以外のディレクトリ構造を持つPyinstaller
-
12-12-2019 - |
質問
埋め込み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,
)
. 所属していません StackOverflow