使用psyco和py2exe?

时间:2011-11-23 02:43:02

标签: python py2exe psyco

在我的主脚本中,让我们调用这个MyScript.py,我就是这样的:

import psyco
psyco.full()

然后我的setup.py看起来像这样:

from distutils.core import setup
import py2exe, sys, os, glob

sys.argv.append('py2exe')

import psyco #speed up compilation
psyco.full()

def find_data_files(source,target,patterns):
    """Locates the specified data-files and returns the matches
    in a data_files compatible format.

    source is the root of the source data tree.
        Use '' or '.' for current directory.
    target is the root of the target data tree.
        Use '' or '.' for the distribution directory.
    patterns is a sequence of glob-patterns for the
        files you want to copy.
    """
    if glob.has_magic(source) or glob.has_magic(target):
        raise ValueError("Magic not allowed in src, target")
    ret = {}
    for pattern in patterns:
        pattern = os.path.join(source,pattern)
        for filename in glob.glob(pattern):
            if os.path.isfile(filename):
                targetpath = os.path.join(target,os.path.relpath(filename,source))
                path = os.path.dirname(targetpath)
                ret.setdefault(path,[]).append(filename)
    return sorted(ret.items())
setup(
    name="MyScript",
    version="1.0",
    description="a script that does something",
    author="Keelx",
    data_files=find_data_files('.','',[
        'gfx/*',
        'data/*',
    ]),
    options={'py2exe': {'bundle_files': 1,'optimize': 2}},
    windows=[{'script': "MyScript.py"}],
    zipfile=None,
)

它创建了一个'dist'文件夹,其中包含可执行文件,win9x可执行文件以及可执行文件旁边的gfx和数据文件夹。但是,当我运行它时,它指向一个日志,其中显示:

  

追踪(最近一次通话):     文件“MyScript.py”,第16行,in     在load_module中输入第82行的“zipextimporter.pyo”     文件“psyco__init __。pyo”,第64行,in   WindowsError:[错误3]系统找不到指定的路径:'C:\ Documents and Settings \ Keelx \ Desktop \ MyScriptFolder \ dist \ MyScript.exe \ psyco \ _psyco.pyd'

似乎psyco模块没有被放入可执行文件中。我一直在寻找,我还没有找到一个可行的解决方案来让py2exe复制psyco。

请不要发布“不要使用py2exe”的解决方案。

先谢谢你,可以帮助我。

1 个答案:

答案 0 :(得分:0)

查找py2exe错误对我来说似乎是一门艺术。 也就是说,我至少会提供一些尝试。 我py2exe'ed一个psyco启用的python脚本,并在设置的包含部分抛出它。 这是你的设置和旧设置之间唯一不同的部分。

options = {'py2exe': {'packages': [ 'IPython'],
                      'includes': ["psyco"],
                     }
          }

此外,我从未能够启用优化。它总是导致随机错误。根据我的经验,最好留下那个。我认为导致这些错误的是matplotlib。

希望这有帮助, 干杯,