1

在我的主脚本中,我们称之为 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 行,文件“zipextimporter.pyo”,第 82 行,load_module 文件“psyco__init__.pyo”,第 64 行,Windows 错误:[错误 3] 系统找不到指定的路径:'C:\Documents and Settings\Keelx\Desktop\MyScriptFolder\dist\MyScript.exe\psyco\_psyco.pyd'

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

并且请不要按照“不要使用 py2exe”的方式发布解决方案。

提前谢谢你,谁能在这里帮助我。

4

1 回答 1

0

寻找 py2exe 错误对我来说似乎是一门艺术。也就是说,我至少会提供一些尝试。我 py2exe 编写了一个启用了 psyco 的 python 脚本,并将它扔到了设置的包含部分中。那是您的设置和我的旧设置之间唯一看起来不同的部分。

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

我也无法启用优化。它总是导致随机错误。根据我的经验,最好把那个关掉。我认为是 matplotlib 导致了这些错误。

希望这会有所帮助,干杯,

于 2011-11-23T04:16:14.270 回答