1

我最近开始尝试使用 cython 和 py2exe,看看是否可以将我的一些 python 项目转换为独立的 Windows 二进制文件。到目前为止,我已经使用 zipfile=None 选项将我的纯 python 代码转换为包含我所有自定义 python 库的 exe 取得了很大成功。py2exe 生成的“dist”目录非常干净,我所有的库都直接嵌入到 exe 中。

但是,在使用 Cython 将我的库转换为 .pyd 文件后,我遇到了一些问题。当我使用 .pyd 文件而不是原始 .py 文件创建新的可执行文件时,py2exe 拒绝将 .pyd 文件包含在可执行文件中,而是将它们放在 exe 的目录之外。这些库与以前完全相同,仅编译为 .pyd 形式。

这是我的 py2exe setup.py

from distutils.core import setup
import glob
import py2exe

setup_dict = dict(
    windows=[
        {
            "script": "myscript.py",
            "icon_resources": [(1, "myicon.ico")]
        }
    ],
    data_files=[
        ("folder1", ["folder1/file1", "folder1/file2"]),
        ("folder2", ["folder2/file1", "folder2/file2"])
    ],
    options = {
        "py2exe":{
            "includes": ['mylibrary1, 'mylibrary2', 'mylibrary3'],
            "excludes": ['excludedlib1', 'excludedlib2'],
            "dll_excludes": ['crypt32.dll']
        }
    },
    zipfile = None
)

# have to call it twice in order to workaround icon bug
setup(**setup_dict)
setup(**setup_dict)

有没有办法在我的可执行文件中包含 .pyd 以避免弄乱目录?对于库的纯 python 版本,这不是问题。

如果有办法包含它们,请告诉我。

另请注意,我运行的是 64 位 Windows,我不能使用 py2exe 的“捆绑文件”选项,因为它仅适用于 32 位系统。

4

0 回答 0