py2app setup.py 使用问题
好的,我正在尝试使用py2app为我的项目生成一个发布版本。不过我还是不太明白怎么操作。所以我的setup.py文件看起来是这样的:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
import setuptools
PACKAGES = ['sqlalchemy.dialects.sqlite']
MODULES = ['sqlite3']
APP = ['tvb/interfaces/web/run.py']
OPTIONS = {'argv_emulation': True,
'packages': PACKAGES ,
'includes' : MODULES }
DATA_FILES = []
setup(
app=APP,
data_files=DATA_FILES,
packages = setuptools.find_packages(),
include_package_data=True,
options={'py2app': OPTIONS},
setup_requires=['py2app', "pyopengl", "cherrypy", "sqlalchemy", "simplejson",
"formencode", "genshi", "quantities","numpy", "scipy",
"numexpr", "nibabel", "cfflib", "mdp", "apscheduler",
"scikits.learn"]
)
我第一个想问的是:在这里我应该在MODULES里包含什么内容呢?py2app会自动扫描setup_requires里的内容并把它们包含进去吗?还是说我需要在MODULES里手动添加一些条目?
另一个问题是,当我尝试运行我的应用时,出现了一个错误:sqlalchemy.exc.ArgumentError: Could not determine dialect for 'sqlite'
。经过大量搜索,我只发现对于py2exe,你需要把sqlalchemy.dialects.sqlite
作为一个包包含进去,但这对我似乎不起作用。我是不是漏掉了什么?
最后一个问题是,在运行python setup.py py2app
之前,我收到了一个错误:malformed object (load command 3 cmdsize not a multiple of 8)
。这正常吗?
祝好,
博格丹
2 个回答
0
from setuptools import setup
APP = ['your_prog.py']
DATA_FILES = ['your.db']
OPTIONS = {
'includes' : ['sqlalchemy.dialects.sqlite',"os", "platform"]
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app']
)
这是一个示例的setup.py文件,用于包含sqlite数据库文件的.py程序。这是一个适合初学者的setup.py示例。如果你的.db文件和your_prog.py在同一个文件夹里,你可以使用这个配置。Mac系统的应用程序会正常运行。如果不指定.db文件,应用程序仍然可以运行,但无法连接到数据库文件。
3
看来我之前完全搞错了。
'includes' : ['sqlalchemy.dialects.sqlite']
我应该用的是其他东西,而这似乎解决了问题。