pyinstaller将py打包为exe文件,用pysintaller居然报错

  File "c:\anaconda3\lib\site-packages\PyInstaller\depend\utils.py", line 226, in __scan_code_instruction_for_ctypes
name = co.co_names[oparg]
IndexError: tuple index out of range
  • 1
  • 2
  • 3


搜索了一番,用群众神奇的方式

找到D:\python\Python36-32\Lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py
路径根据安装目录找,上面是我的安装目录
打开modulegraph.py将大约2731附近将

return module_code_object.co_names[co_names_index]
更改为
return co_names_index
#coding by rekfan on 2017/03/21 10:40
#return module_code_object.co_names[co_names_index]
  • 1
  • 2
  • 3
  • 4
  • 5

重新运行后发现……前一个地方不报错了,又有其他地方报错了,最后追查一圈发现了原因……使用pyinstaller的开发者新版,官网目前的版本是3.2.1 只支持到python3.5 ,恰好我用的Anaconda3装的python是3.6版本的。pyinstaller3.3 还没有发行,但是官网源码里有 https://github.com/pyinstaller/pyinstaller 替换 D:\python\Python36-32\Lib\site-packages\PyInstaller 即可 这样就支持python3.6了 不过是开发版,可能还不完善。

附带pyinstaller的使用方法

pip 安装,国内的源速度飞快

pip install -i https://pypi.douban.com/simple pyinstaller
  • 1

然后正常输入pyinstaller -h 可以看到全面的帮助,最常见的把一个py脚本打包成exe就是
确保命令行已经在该文件目录下后输入

pyinstaller -F -c target.py 
  • 1

-F代表打包成一个exe文件,-c是命令行脚本,如果有GUI则改为-w
具体的参数太多了,直接pyinstaller -h看吧。

===========================================================================================================

1. 错误类型:

ImportError: C extension: No module named ‘pandas._libs.tslibs.timedeltas’ n

2. 错误分析:

因为我的代码中引用了pandas库,然后使用pyinstaller打包的时候显示打包成功,但实际运行过程中显示模块缺失

3. 尝试解决方案:

3.1 删除pandas库重新安装

走外网的pip速度慢的时候,可以使用国内镜像,豆瓣镜像下载

pip install -i https://pypi.douban.com/simple/ packages-name)
  • 1

重新安装后,再重新打包依然无法解决问题

3.2 再次百度

CSDN论坛的回答
经测试解决了我的问题。

4. 正式解决方案

修改原有的打包代码为:

pyinstaller -F -w -i xxx.ico yyy.py --hidden-import=pandas._libs.tslibs.timedeltas
  • 1
  • -F 指只生成一个exe文件,不生成其他dll文件
  • -w 不弹出命令行窗口
  • -i 设定程序图标 ,其后面的ico文件就是程序图标
  • yyy.py 就是要打包的程序
  • –hidden-import=pandas._libs.tslibs.timedeltas 隐藏相关模块的引用

======================================================================================================

如果遇到错误:ImportError: DLL load failed: 找不到指定的模块
出现错误原因:安装包的来源问题,也可以理解为包版本兼容问题,有的包使用官方出版,有的包使用whl文件安装

解决方案:将所有包都统一来源,要么全部使用官方出版的包,要么全部使用whl里面的包,问题就解决了

numpy+scipy+scikit-learn组件,使用whl文件安装下载:

http://pan.baidu.com/s/1hstDOo8

第二步:去到Python安装Scripts目录下,再使用pip install xxx.whl安装,先装Numpy\Scipy包,再安装Scikit-Learn。

pyinstaller 将.py生成.exe ----报错 “IndexError: tuple index out of range”的更多相关文章

  1. python报错IndexError: list index out of range

    今天写个ping vpn的python脚本,报错IndexError: list index out of range 最后查看是python读取文件中出现空格 去掉空格即可

  2. xadmin 数据添加报错: IndexError: list index out of range

    报错现象 xadmin 集成到项目后进行添加数据的时候报错 具体如下 黄页 后端 具体报错定位 报错分析 点击这里 报错解决 源码 input_html = [ht for ht in super(A ...

  3. Py打包exe报错

      Py打包exe报错       下载地址 https://github.com/pyinstaller/pyinstaller       用管理员执行   pip install https:/ ...

  4. 在Windows平台下Qt的exe报错问题排查步骤

    在Windows平台下Qt的exe报错问题排查步骤 工具介绍: 1. Dependency Worker Dependency Worker是一个免费的用具用来扫描任何的32bit 或者64bit 的 ...

  5. 如何解决金蝶IKernel.exe报错 Windows Installer 错误 重新安装、无法卸载

    如何解决金蝶IKernel.exe报错 Windows Installer 错误 金蝶这个小婊子,就是这么贱. 卸载了高版本的,再安装低版本就不能安装上,死活都不能安装. 请手动启动一下Install ...

  6. 用itext生成PDF报错:Font 'STSong-Light1' with 'UniGB-UCS2-H' is not recognized.

    用itext生成PDF报错,加上try catch捕获到异常是 BaseFont bFont = BaseFont.createFont("STSong-Light1", &quo ...

  7. 在数组添加元素时报错:IndexError: list index out of range

    今天第一次发随笔还有许多不足之处,欢迎评论!!! 最近在写一个成语接龙的小游戏,结果在数组添加元素时报错:IndexError: list index out of range 源码: import ...

  8. yii2.0 联表查询数据库报错:undefined index order_id

    1.在查询时加了->select();如下,要加上order_id,即关联的字段(比如:order_id)比如要在select中,否则会报错:undefined index order_id / ...

  9. Python常见错误:IndexError: list index out of range

    用python写脚本查询字典时,在遍历字典时循环到某一项时老是报错   出现这种错误有两种情况: 第1种可能情况 list[index]index超出范围 第2种可能情况 list是空值就会出现 In ...

随机推荐

  1. Windows IOT 开发入门(硬件入门)

    接上文,在准备工作完成之后.接下来应该要熟悉硬件和架构了. 以下是一个简易物联网架构设计图 关于微软云这里就不说太多了.有兴趣的朋友可以去这里了解更多https://www.azure.cn/. 在上 ...

  2. Ogre RTSS组件解析

    我们为什么要用RTSS. Ogre如计算物体位置,纹理,光照都有固定API如(glMatrixFrustumEXT, glLoadmatrix, glTexture, glLight ),使用这些AP ...

  3. 使用3ds Max制作简单卧室

    一.介绍 学习目标:熟练使用“标准基本体”和“扩展基本体”内的按钮来创建对象. 软件环境:3ds Max2015 二.实验步骤 1,启动3ds Max,使用“长方体”工具在场景中创建一个长方体作为空间 ...

  4. Hessian示例:Java和C#通信

    一个简单的利用Hessian在Java和C#之间通信的例子,服务端为Java,客户端为C#. 资源下载 先要准备好C#和Java的第三方类库:http://hessian.caucho.com/ Hs ...

  5. 大数据:Spark Core(二)Driver上的Task的生成、分配、调度

    1. 什么是Task? 在前面的章节里描写叙述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Wor ...

  6. Linux下seq的使用

    seq - print a sequence of numbers [root@gechong ~]# man seq 主要有一下三个参数 -f:用来格式化输出 -s:用来指定分隔符号,默认是回车 - ...

  7. MySQL存储引擎Innodb和MyISAM对比总结

    Innodb引擎 InnoDB是一个事务型的存储引擎,设计目标是处理大数量数据时提供高性能的服务,它在运行时会在内存中建立缓冲池,用于缓冲数据和索引. Innodb引擎优点 1.支持事务处理.ACID ...

  8. Xshell的常用命令

    常用的命令: suse linux 常用命令 (1) 命令ls——列出文件 ls  显示当前目录文件 ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件 ls a* 列出当 ...

  9. NFS介绍 NFS服务端安装配置 NFS配置选项

    NFS 介绍 • NFS是Network File System的缩写 • NFS最早由Sun公司开发,分2,,4三个版本,2和3由Sun起草开发,.0开始Netapp公司参与并主导开发,最新为4.1 ...

  10. Java Web入门必知

    Java Web应用的核心技术是Java Server Page和Servlet.此外,开发一个完整的Java Web应该涉及一下几种概念及技术. 1.Servlet组件           Serv ...