2013-08-29 43 views
0

我已经基于this example这个代码:pyTables py2exe例如不运行

from tables import * 

class Particle(IsDescription): 
    name = StringCol(16) # 16-character String 
    idnumber = Int64Col() # Signed 64-bit integer 
    ADCcount = UInt16Col() # Unsigned short integer 
    TDCcount = UInt8Col() # Unsigned byte 
    grid_i = Int32Col() # Integer 
    grid_j = IntCol() # Integer (equivalent to Int32Col) 
    pressure = Float32Col() # Float (single-precision) 
    energy = FloatCol() # Double (double-precision) 

h5file = openFile("tutorial.h5", mode="w", title="Test file") 
group = h5file.createGroup("/", "detector", "Detector information") 
table = h5file.createTable(group, "readout", Particle, "Readout example") 

print h5file 

particle = table.row 

for i in xrange(10): 
    particle['name'] = 'Particle: %6d' % i 
    particle['TDCcount'] = i % 256 
    particle['ADCcount'] = (i*256) % (1<<16) 
    particle['grid_i'] = i 
    particle['grid_j'] = 10 - i 
    particle['pressure'] = float(i*i) 
    particle['energy'] = float(particle['pressure']**4) 
    particle['idnumber'] = i * (2**34) 
    particle.append() 

table.flush() 

table = h5file.root.detector.readout 
pressure = [x['pressure'] for x in table.iterrows() if x['TDCcount']>3 and 
                 20<=x['pressure']<50] 

print pressure 

h5file.close() 

而且我与py2exe具有以下setup.py文件编译它:

import os 
import shutil 

print '*\n*\nBegin clean up...\n*\n*' 

build_folder_name = 'build' 
dist_folder_name = 'dist' 

build_path = os.path.abspath(os.path.join(os.curdir, build_folder_name)) 
if os.path.exists(build_path): 
    print 'removing folder: {0}'.format(build_path) 
    shutil.rmtree(build_path) 

dist_path = os.path.abspath(os.path.join(os.curdir, dist_folder_name)) 
if os.path.exists(dist_path): 
    print 'removing folder: {0}'.format(dist_path) 
    shutil.rmtree(dist_path) 

print '*\n*\nClean up done. Setup will now begin...\n*\n*' 

from distutils.core import setup 
import py2exe 

import numpy # http://stackoverflow.com/questions/15478230/pack-a-software-in-python-using-py2exe-with-libiomp5md-dll-not-found 

excludes_list = [] 

includes_list = [ 
    'numpy', 
    'tables', 
    'tables.utilsextension' 
] 

setup(
    console=['run_me.py'] 
    , options={ 
     'py2exe': { 
      'excludes': excludes_list 
      , 'includes': includes_list 
      , 'dll_excludes': ['w9xpopen.exe', 'MSVCP90.dll', 'libzmq.dll'] 
     } 
    } 
) 

生成的可执行文件呢不运行,并产生此错误:

Traceback (most recent call last): 
    File "run_me.py", line 1, in <module> 
    File "tables\__init__.pyc", line 82, in <module> 
    File "tables\utilsextension.pyc", line 12, in <module> 
    File "tables\utilsextension.pyc", line 10, in __load 
    File "utilsextension.pyx", line 275, in init tables.utilsextension (tables\utilsextension.c:15283) 
ImportError: No module named _comp_lzo 

我想了解为什么会发生此错误,以及如何 要解决这个问题。任何指针将不胜感激。

我的环境是Win7和Python 2.7.3。其他的包是通过PIP或从Unofficial Windows Binaries

+0

任何运气这个问题? – codeKiller

+0

没有运气。我们停止将pyTables包含在构建中,并通过解决方法解决了问题。我本来希望PyTables的人会提供支持。 – Pablo

回答

0

加入“tables._comp_lzo”到includes_list安装解决了对那些有问题