py2exe无法解析ibm_db依赖项(DLL)

时间:2017-01-03 10:00:29

标签: python-2.7 db2 py2exe

我正在尝试使用py2exe为我用python 2.7编写的桌面应用程序创建一个EXE。 该应用程序使用ibm_db(v2.0.7),它以.egg文件夹的形式安装到site-packages。 ibm_db.py文件的内容非常短,因为逻辑本身是在DLL中实现的:

import os
if 'clidriver' not in os.environ['PATH']:
    os.environ['PATH'] = os.environ['PATH'] + ";" + os.path.join(os.path.abspath(os.path.dirname(__file__)), 'clidriver', 'bin')
def __bootstrap__():
   global __bootstrap__, __loader__, __file__
   import sys, pkg_resources, imp
   __file__ = pkg_resources.resource_filename(__name__,'ibm_db_dlls\ibm_db.dll')
   __loader__ = None; del __bootstrap__, __loader__
   imp.load_dynamic(__name__,__file__)
__bootstrap__()

当我在项目上运行py2exe时,对ibm_db的依赖关系没有得到妥善处理(DLL没有进入dist),因此运行exe文件时会发现以下错误:

...
  File "ibm_db.pyc", line 10, in <module>
  File "ibm_db.pyc", line 6, in __bootstrap__
ImportError: No module named pkg_resources

我尝试将DLL手动复制到dist文件夹(直接和ibm_db_dlls子文件夹下),但它没用。 我找到了这个页面,并意识到py2exe有一个问题: http://www.py2exe.org/index.cgi/ExeWithEggs

据我了解,解压缩鸡蛋不是我的方法,因为我的程序确实使用pkg_resources(通过ibm_db.py)。不过,我尝试使用--always-unzip选项通过easy_setup安装ibm_db,但是安装给了我这个错误:

Not a URL, existing file, or requirement spec: '--always-unzip'

它仍然以.egg的形式安装。 所以我正在查看“在dist目录中包含.egg文件”选项,并想知道它是否可以提供帮助。如果是这样 - 从哪里开始?

我正在使用这个简单的setup.py来运行py2exe:

from distutils.core import setup
import py2exe
setup(console=['MyApp.py'])

那里提到的“TurboGears”是什么?它看起来不像我在我的应用程序中使用的东西。

任何建议将不胜感激。 感谢。

0 个答案:

没有答案