【发布时间】:2015-09-09 17:48:40
【问题描述】:
Windows 7 64 位 - Python 2.6 32 位 - Pymunk 4.0.0
好的,感谢Using Pymunk with Pyinstaller。我花了很长时间,但现在我明白了如何使用 Pyinstaller 将任何我想要的东西放入 exe 中。然而,一个特定的 dll——仍然无法加载——chipmunk.dll。
这是我用于 Pyinstaller 的 .spec 文件。
# -*- mode: python -*-
a = Analysis(['Mesh_Animator.py'],
pathex=['C:\\Users\\username\\workspace\\2D_Mesh_Animator'],
hiddenimports=[],
hookspath=None)
import os, pymunk
pymunk_dir = os.path.dirname(pymunk.__file__)
chipmunk_libs = [
('chipmunk.dll', os.path.join(pymunk_dir, 'chipmunk.dll'), 'BINARY'),
]
a.datas+=[('imagetest.jpg','imagetest.jpg','DATA')]
a.binaries+=chipmunk_libs
#or just
#a.binaries+=[('chipmunk.dll','chipmunk.dll','BINARY')]
#both seem to work the say way
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'Mesh_Animator.exe'),
debug=False,
strip=None,
upx=True,
console=True )
这一切包都没有问题。只要我在exe旁边有dll,图像就可以正常加载,所以我不会出错。我通过比较包含 dll 的前后版本来确认 dll 存在。 160 kb 的差异。然后我用它来检查在 Pyinstallers exe 环境下启动时 dll 是否在当前路径中。
try:
print os.listdir(sys._MEIPASS).count("chipmunk.dll"),"dlls"
except:
#not in pyinstaller
print 0,"dlls"
我在输出中得到一个准确的1 dlls,但 pymunk 抱怨它找不到它。它在 _MEIPASS PATH 目录中,为什么 pymunk 找不到它?该 dll 位于根目录中,因此不需要搜索。如何让 pymunk 搜索正确的位置?
【问题讨论】:
-
你的python是32位还是64位? Pymunk 目前在 windows 上只支持 32bit python。
标签: python path pyinstaller pymunk