在使用 Pyinstaller 生成 exe 程序时,由于没有用调试模式,在打开生成的 exe 时跳出告警:
WARNING: file already exists but should not: C:\Users\maydolly\AppData\Local\Temp\_MEI127362\Include\pyconfig.h
解决方法之一:
在生成的目标文件夹下,编辑 .spec 文件,在 a = Analysis(… 后面添加:
- for d in a.datas:
- if ‘pyconfig’ in d[0]:
- a.datas.remove(d)
- break
然后不再使用指令 python pyinstaller.py -F XXX.py 而是换成
python pyinstaller.py -F XXX.spec
对,就是用spec文件代替之前的 py 文件。如果需要生成不带调试窗口的文件,需要把 exe 选项中的 console=TRUE 改为 console=False .
附完整 spec 文件:
- # -*- mode: python -*-
- a = Analysis([‘C:\\\xb0\xd9\xb6\xc8\xd4\xc6\xcd\xac\xb2\xbd\xc5\xcc\\documents\\python\\HFFS\\src\\hffs.py’],
- pathex=[‘C:\\Python27\\PyInstaller-2.1\\hffs’],
- hiddenimports=[],
- hookspath=None,
- runtime_hooks=None)
- for d in a.datas:
- if ‘pyconfig’ in d[0]:
- a.datas.remove(d)
- break
- pyz = PYZ(a.pure)
- exe = EXE(pyz,
- a.scripts,
- a.binaries,
- a.zipfiles,
- a.datas,
- name=’hffs.exe’,
- debug=False,
- strip=None,
- upx=True,
- console=False )
解决方法之二:
修改文件 PyInstaller-2.1–>PyInstaller–>build.py
- Go to
C:\Python27\Lib\site-packages\PyInstaller\build.py
- Find the
def append(self, tpl):
function. - Change
if tpl[2] == "BINARY":
toif tpl[2] in ["BINARY", "DATA"]:
注意,上例中的地址 C:\Python27\Lib\site-packages\Pyinstaller\build.py是你把pyinstaller装到python目录中的情况下,像我没有安装,直接把pyinstaller随意放一个位置的,就要在 pyinstaller 的安装目录下修改。
谢谢了,刚好遇到这个问题
您好,我也遇到了您类似的问题,不过不是.h文件,而是pyd文件:torch\_C.cp35-win_amd64.pyd。实在不知道什么原因。劳烦您帮忙看下好吗?谢谢
是不是缺文件了?这个最好在32位系统下允许,64位的会出问题,这个软件不够好
您好,我是一名在读硕士生,请问最后你的这个问题解决了嘛,是如何解决的呢,谢谢
就是按文章方法解决的。但是不建议用这个软件了,兼容性太差,只能xp机器用,高级版本的win基本都用不了了
您好,我也遇到了您类似的问题,不过不是.h文件,而是pyd文件:_C.cp36-win_amd64.pyd。实在不知道什么原因。劳烦您帮忙看下好吗?谢谢
您好,我跟您出现的问题相同,请问您解决了吗?
文中写了解决方案啊,我就是按这个方法解决的。
你好,能详细的写下解决流程吗?非专业,看不太明白,谢谢
这个示例已经够详细了,看不懂我也没办法呢
您好