2013-12-15 1 views
1

Я использую Python 3.2 32bit с установленной sqlalchemy. Я написал довольно простой скрипт в Python, используя sqlalchemy. Я импортирую его так:cx_freeze не видит sqlalchemy под окнами?

from sqlalchemy import * 
from sqlalchemy.orm import scoped_session, sessionmaker 
from sqlalchemy.ext.declarative import declarative_base 

Сценарий работает правильно. Я хочу сделать .exe с cx_freeze. Поэтому я написал следующее 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 

создаются Исполняемым но это не сработает - кажется, что cx_freeze не видит sqlalchemy, который, очевидно, установлен!

Любая помощь будет очень признательна.

+0

Где находится SQLalchemy? Иногда cx_Freeze имеет проблемы с каталогами .egg, но я не могу их воспроизвести. –

+0

В python_dir \ Lib \ site-packages \ SQLAlchemy-0.8.4-py3.2.egg. Так что это действительно яйцо. Считаете ли вы, что это проблема для cx_Freeze? Могу ли я каким-то образом извлечь его? – Wookie88

+0

Попробуйте скопировать папку 'sqlalchemy' из папки .egg, на один уровень в каталог' site-packages', а затем снова замерзать. –

ответ

1

cx_Freeze, похоже, имеет некоторые проблемы с пакетами, установленными в виде яиц (возможно, где яйцо представляет собой zip-файл). Откройте папку или почтовый файл, заканчивающийся на .egg, и скопируйте пакет - папку sqlalchemy в этом случае - на один уровень в каталог site-packages. Затем снова заморозите его, и cx_Freeze должен найти пакет.