将 psyco 与 py2exe 一起使用?

Posted

技术标签:

【中文标题】将 psyco 与 py2exe 一起使用?【英文标题】:Using psyco with py2exe? 【发布时间】:2011-11-23 02:43:01 【问题描述】:

在我的主脚本中,我们称之为 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 和数据文件夹。但是,当我运行它时,它会将我指向一个日志,上面写着:

Traceback(最近一次调用最后一次): 文件“MyScript.py”,第 16 行,在 文件“zipextimporter.pyo”,第 82 行,在 load_module 文件“psyco__init__.pyo”,第 64 行,在 WindowsError: [错误3] 系统找不到指定路径:'C:\Documents and Settings\Keelx\Desktop\MyScriptFolder\dist\MyScript.exe\psyco\_psyco.pyd'

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

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

在此先感谢能帮助我的人。

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

是的,我曾经尝试过,但完全没有效果。您愿意解释一下 'packages': ['IPython'] 位吗? 我在我的 gtk 应用程序中使用 IPython 作为开发控制台。它在那里只是为了在包字段中有一些东西。另外要尝试的另一件事是尝试将 psyco 作为鸡蛋而不是鸡蛋。我相信在我必须编译它们或运行 win32 .exe 安装程序的包中使用 easy_install 时存在一些问题。

以上是关于将 psyco 与 py2exe 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 py2exe 和 esky 冻结 Celery?

Py2exe 将文件捆绑到单个 exe 中

将使用 Psyco 的 Python 应用程序移植到 Mac

为啥不总是将 psyco 用于 Python 代码?

为啥 Psyco 使用大量内存?

将 Psyco 移植到 64 位可能存在哪些缺陷?