我最近开始尝试使用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位窗口,我不能使用py2exe的“bundle files”选项,因为它只适用于32位系统。