2011-03-15 69 views
3

我使用py2exe製作EXE一個問題。在我的項目中,我使用sqlalchemy和mssql模塊。 我setup.py腳本的樣子:使用py2exe使EXE + SQLAlchemy的+ MSSQL

from distutils.core import setup 
import py2exe 


setup(
    windows=[{"script" : "pyrmsutil.py"}], 
    options={"pyrmsutil" : { 
    "includes": ["sqlalchemy.dialects.mssql", "sqlalchemy"], 
    "packages": ["sqlalchemy.databases.mssql", "sqlalchemy.cresultproxy"] 
}}) 

但是,當我開始喜歡的程序: python.exe setup.py py2exe

我收到建記錄與以下錯誤: 以下模塊似乎缺少 [ '_scproxy', '通過pkg_resources', 'sqlalchemy.cprocessors', 'sqlalchemy.cresultproxy']

而在 「DIST」 文件夾中,我看到我的pyrmsutil.exe文件,但是當我運行它沒有任何反應。我的意思是可執行文件啓動,但什麼都不做,並且沒有任何pyrmsutil.exe.log就立即結束。這很奇怪。

任何人可以幫助我這個錯誤?

回答

0

貌似py2exe找不到SQLAlchemy的C擴展。

爲什麼不直接包括在py2exe的排除在分配的雞蛋,放sqlachemy和負載開始先有蛋?

我在啓動腳本中使用此:

import sys 
import path 
import pkg_resources 

APP_HOME = path.path(sys.executable).parent 
SUPPORT = APP_HOME/'support' 

eggs = [egg for egg in SUPPORT.files('*.egg')] 
reqs, errs = pkg_resources.working_set.find_plugins(
    pkg_resources.Environment(eggs) 
) 
map(pkg_resources.working_set.add, reqs) 

sys.path.extend(SUPPORT.files('*.egg')) 

我用賈森Orendorff的路徑模塊(http://pypi.python.org/pypi/path.py),但你可以很容易地消滅它,如果你要。

1

我知道這是不是本身的答案,但你有嘗試pyInstaller?我曾經使用py2exe,發現真正可分配的東西很棘手。 pyInstaller需要更多的設置,但文檔很好,結果似乎更好。

爲了解決這個問題,你可以嘗試搜索所提到的DLL和使用的exe,或者你建立了將它們放在文件夾中。