ldehai

让每个人都能接受平等的教育

嗨,我是@ldehai,iOS / Mac 独立开发者,现居南京。我创建了AventLabs,一个在线学习编程和设计的平台,主要面向初学者。


我正在写一本书《每个人都会编程》

File Already Exists but Should Not Pyconfig

上一篇,python项目用到了scipy计算模块,之后用pyinstaller打包后,每次运行就会报警告file already exists but should not:……./pyconfig.h。虽然不影响运行,还是觉得有必要解决这个问题,在搜索到stackoverflow这个帖子后,问题解决。 问题的原因是pyinstaller打包时pyconfig.h多打了一次,所以会报已经存在了。这个解决方案就是把多余的pyconfig.h去掉。

下面开始详细说明如何修改:

上一篇讲到使用如下命令打包exe:

c:/python27/python.exe c:/pyinstaller/pyinstaller.py --noconfirm --noconsole --onefile --icon=Icon.ico myapp.py

请仔细观察myapp.py所在目录,会自动生成myapp.spec文件,注意是每次都会重新生成,内容如下:

a = Analysis(['myapp.py'],
         pathex=['c:\\src'],
         hiddenimports=[],
         hookspath=None,
         runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
      a.datas,
      name='myapp.exe',
      debug=False,
      strip=None,
      upx=True,
      console=False , icon='Icon.ico')

大概解释下文件的内容:

第一行a = Anaylysis(…)是用来分析程序用到的库,下面就是打包成exe的一些参数。所以我们在第一行代码之后加代码把多余的pyconfig.h去掉,新的spec文件如下:

a = Analysis(['myapp.py'],
         pathex=['c:\\src'],
         hiddenimports=[],
         hookspath=None,
         runtime_hooks=None)
#add_begin
for d in a.datas:
    if 'pyconfig' in d[0]:
        a.datas.remove(d)
        break
#add_end
pyz = PYZ(a.pure)
exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
      a.datas,
      name='myapp.exe',
      debug=False,
      strip=None,
      upx=True,
      console=False , icon='Icon.ico')

为了使用修改后的spec文件来打包,需要使用新的命令:

c:/python27/python.exe c:/pyinstaller/pyinstaller.py myapp.spec

试试,warning没了吧

最近的文章

Framer简介

Framer是一个开源项目,一个基于JavaScript的原型工具,专为设计师打造。现在的应用更注重交互设计,它可以让你效率更高。项目地址http://www.framerjs.com,使用Framer包括4个步骤: 用Photoshop设计原型图 用Framer.app从Photoshop中导出设计图 在app.js里写视图展示及交互代码,可以加各种特效 用浏览器打开index.html文件就可以查看和调试了Framer项目的代码结构是这样的:app.js //...…

framer继续阅读
更早的文章

Python程序打包成EXE--使用pyinstaller打包matplotlib、scipy、wxpython

用python帮朋友写了个科学计算的程序,用到了matplotlib和scipy,以及wxpython。代码写完,发现不能直接拿给朋友用,windows系统默认是没有运行环境的,得装python,matplotlib,scipy以及其他的运行库。这对于程序小白来说实在强人所难。好在有pyinstaller,可以用它打包成一个exe文件,所有的库都在一起了。妈妈再也不用担心没有环境跑程序了。到pyinstaller官网下载安装包。详细安装说明见官方文档。这里简要说明一下步骤:直接下载压缩包,...…

pyinstaller继续阅读