Python 具有非平凡目录结构的pyinstaller

Python 具有非平凡目录结构的pyinstaller,python,windows,py2exe,pyinstaller,Python,Windows,Py2exe,Pyinstaller,我已经用嵌入式web服务器(tornado)、数据库(目前使用sqlite的sqlalchemy)和整个shabang编写了一个简单的web应用程序。我想把它捆绑到一个独立的目录中,其中有一个可以运行的exe。部署场景绝对需要一键安装并像这样运行 我尝试让py2exe或pyinstaller打包我的代码时完全失败了。问题与目录结构和布局直接相关,如下所示。我不想把目录布局改变太多。有人能建议我如何使用py2exe或pyinstaller或任何其他合适的工具来实现这一点吗 project/ |-&

我已经用嵌入式web服务器(tornado)、数据库(目前使用sqlite的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/

很抱歉回答我自己的问题。但经过大量的谷歌搜索和反复试验,我成功地让它工作了。我将我的setup.py(用于py2exe)粘贴到下面,以供有类似问题的人使用tornado+sqlalchemy+sqlite处理py2exe。当我运行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,
    )

你能提供你试过的代码吗?试过的时候有什么问题?有些文件丢失了吗?Janne,我在包括我的静态目录时遇到了麻烦-glob只复制给定目录中的文件。要在static/下创建新目录,我必须在我的数据文件规范中指定其他条目。