我正在使用安装了sqlalchemy的Python 3.2 32位。我使用sqlalchemy在Python中编写了非常简单的脚本。我正在那样导入它:
from sqlalchemy import *
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
脚本运行正常。我想用cx_freeze
创建.exe。所以我写了以下setup.py
文件:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "dev_db",
version = "1.0",
description = "Device Database System",
options = {"build_exe": build_exe_options},
executables = [Executable("./dev_db/db_main/db_init.py", base=base)])
(该应用程序是包含其他应用程序的更大包的一部分)
启动setup.py build
后一切正常,除了:
? sqlalchemy imported from db_init__main__, dev_db.common.alchemy_base, dev_db.common.devinfo_io, dev_db.common.event_io
? sqlalchemy.engine.reflection imported from db_init__main__
? sqlalchemy.ext.declarative imported from dev_db.common.alchemy_base, dev_db.common.event_io
? sqlalchemy.ext.hybrid imported from dev_db.common.devinfo_io, dev_db.common.event_io
? sqlalchemy.orm imported from db_init__main__, dev_db.common.alchemy_base, dev_db.common.devinfo_io
.exe已创建,但无法正常工作 - 似乎cx_freeze无法看到明显安装的sqlalchemy!
非常感谢任何帮助。
答案 0 :(得分:1)
cx_Freeze似乎与作为鸡蛋安装的软件包有一些问题(可能是鸡蛋是zip文件的地方)。打开以.egg
结尾的文件夹或zip文件,并将包 - 本例中的sqlalchemy
文件夹 - 复制到site-packages
目录中。然后重新冻结它,cx_Freeze应该找到包。