pyinstaller pathex参数引发打包no module name异常

现象:

最近将pyinsatller升级到最新的Version: 5.0.1版本后(之前一直用的是3.5版本同样方法未遇到问题,今次更新到最新版本后5.0.1后打包就遇到问题,具体是这中间哪个版本开始有变化也不清楚了,也不去追究,凡是在新版本中遇到问题就在新版本中解决),详细现象及解决办法如下:

1。 先贴上pyinstaller的官方介绍:点击跳转

2。使用pyinstaller打包完成后到dist目录下点击 .exe程序运行时提示 “no module found”,凡是所有外部加载的模块全部无法识别到,然后单独将对应的包放到该dist目录下再运行则问题消失,表明在打包时未正常对应目录所依赖的模块加载进去

3。先来看打包命令,我是使用批处理,跟 .py的主文件(即可运行主窗口文件)在同一目录

@echo off
echo Current Dish:%~d0
echo Current Dish and Path:%~dp0
echo Current CMD default Dir:"%cd%"
set "current_dir=%~dp0"
echo %current_dir%
set "output_dir=%current_dir%"
cd %output_dir%
;echo "%cd%"
pyinstaller.exe -D -w %current_dir%\SmartTools.py -i %current_dir%\icon\Tool.ico
pause

4。pyinstaller打包的时候会首先生成一个spec文件,我们可以手工去修改这个文件,下次打包指定用这个文件。它的好处是:里面可以写更复杂的选项,也可以重复利用,这个方法我是在pyinstaller 3.5版本中这么用的,但在pyinstaller5.0.1版本中却会每次重新覆盖掉我所修改的spec文件,导致该pathex每次为空,所以在打包时就不会将py文件中所引用的文件加载进去进行编辑打包,关于该pathex参数解释可以到第一步的官方中去查找,下面我截图出来给你们看(明确告诉我们该参数主要就是文件中关于imports导模块所需路径)

5。那到这里就已经知道问题出在哪里了,但要如何处理才能将spec文件中的pathex中带上当前地址呢,上面也已经给出的明确的答案,就是在pyinstaller后面带上 --paths参数,现修改编辑打包文件如下(红色字体为新增部分):

@echo off
echo Current Dish:%~d0
echo Current Dish and Path:%~dp0
echo Current CMD default Dir:"%cd%"
set "current_dir=%~dp0"
echo %current_dir%
set "output_dir=%current_dir%"
cd %output_dir%
;echo "%cd%"
pyinstaller.exe --paths %current_dir% -D -w %current_dir%\SmartTools.py -i %current_dir%\icon\Tool.ico
pause

6。重新运行该批处理后再去检查 spec文件,查看pathex是否已经将对应目录添加上,经确认该参数中已经有值了,为一个列表

# -*- mode: python ; coding: utf-8 -*-
 block_cipher = None
 a = Analysis(
     ['E:\\SmartTools\\\\SmartTools.py'],
     pathex=['E:\\SmartTools\\'],
     binaries=[],
     datas=[],
     hiddenimports=[],
     hookspath=[],
     hooksconfig={},
     runtime_hooks=[],
     excludes=[],
     win_no_prefer_redirects=False,
     win_private_assemblies=False,
     cipher=block_cipher,
     noarchive=False,
 )

7。 重新到dist目录下去执行 .exe程序,正常启动未报任何错误,到此问题成功解决。

以上就是pyinstaller pathex参数引发打包no module name异常的详细内容,更多关于pyinstaller打包异常的资料请关注我们其它相关文章!

(0)

相关推荐

  • 总结Pyinstaller打包的高级用法

    一.安装pyinstaller PyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包. 因是第三方包,所以需要安装一下: pip install pyinstaller 或者升级到最新版本: pip install --upgrade pyinstaller 或者安装开发者版本: pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz 当然了,也可以下载whl文件,

  • python之pyinstaller组件打包命令和异常解析实战

    项目场景: Python版本:3.8 因公司业务需求,须开发一套局域网内视频会议软件,此次采用Python实现此功能. 程序编写完并在编译器实现此功能后,采用pyinstaller组件打包成应用程序 问题描述: 在使用pyinstaller组件打包过程中,着实遇到一些问题,以下列出此次遇到主要的问题: 1.如何打包多个文件? 2.打包完运行后控制台显示"找不到指定模块.mkl_intel_thread.l.dll",图示如下: 3.打包如何排除不需要的组件以减少包的大小? 4.待补充

  • Pyinstaller打包Pytorch框架所遇到的问题

    目录 前言 基本流程 一.安装Pyinstaller 和 测试Hello World 二.打包整个项目,在本机上调试生成exe 三.在新电脑上测试 参考资料 前言 第一次尝试用Pyinstaller打包Pytorch,碰见了很多问题,耗费了许多时间!想把这个过程中碰到的问题与解决方法记录一下,方便后来者. 基本流程 使用Pyinstaller打包流程可分为以下三步: 安装Pyinstaller,写个Hello world打包测试 打包整个项目,在本机上调试生成exe 将exe拷贝到新电脑上,测试

  • pyinstaller打包exe程序的步骤和添加依赖文件的实现

    目录 pyinstaller打包exe程序和添加依赖文件 1.安装pyinstaller库 2.pyinstaller的打包机制 3.打包命令 4.添加导包外的一些依赖文件 5..spec方式打包 6.pyinstaller常用参数 pyinstall打包时的依赖问题 pyinstaller打包exe程序和添加依赖文件 或许我们并不是专业的程序猿,但是却可以通过python来提高我们的工作效率,减少加班时间,让代码替我们完成一些重复的工作,节省下来的时间去泡个妹子,牵牵小手不香吗 话不多说,马上

  • Pyinstaller打包工具的使用以及避坑

    目录 一.基本使用 二.基本错误处理 1.当运行exe后出现提示:No module named XXX 2.当运行出现报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte 3.当运行出现这种报错:TemplateDoesNotExist at /index/ 4.项目缺少样式css和js 本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础

  • pyinstaller pathex参数引发打包no module name异常

    现象: 最近将pyinsatller升级到最新的Version: 5.0.1版本后(之前一直用的是3.5版本同样方法未遇到问题,今次更新到最新版本后5.0.1后打包就遇到问题,具体是这中间哪个版本开始有变化也不清楚了,也不去追究,凡是在新版本中遇到问题就在新版本中解决),详细现象及解决办法如下: 1. 先贴上pyinstaller的官方介绍:点击跳转 2.使用pyinstaller打包完成后到dist目录下点击 .exe程序运行时提示 “no module found”,凡是所有外部加载的模块全

  • 基于PyInstaller各参数的含义说明

    说明 以下介绍假设用户脚本为main.py,生成结果为main.exe. 有些参数实在很少用到,只列出简单介绍,具体请参阅原文. 通用参数 参数名 描述 说明 -h 显示帮助 无 -v 显示版本号 无 –distpath 生成文件放在哪里 默认:当前目录的dist文件夹内 –workpath 生成过程中的中间文件放在哪里 默认:当前目录的build文件夹内 -y 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖 默认:询问是否覆盖 –upx-dir UPX_DIR 指定upx工具的目

  • 利用pyinstaller将py文件打包为exe的方法

    写在前面 做大创的时候,因为需要计算合金的各种能量.温度等一大堆数据,为了能够福泽后来的学弟学妹,我决定将我处理数据时用的python程序打包成exe,这样就可以在没有安装python环境的电脑上运行我的程序了.所以上网查了一大堆如何打包的方法,尝试了py2exe和pyinstaller这两种方法,发现还是后者更加的简单便捷.同时为了能够帮助我自己以后再想用到的时候有一个教程可以查找,我就写了这一篇博客出来,留作纪念. 前提条件 首先我们需要两个东西:python3.4版本,pyinstalle

  • PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译

    环境: win7+python3.5(anaconda3) 理论上,win7及以上的系统和python任意版本均可. 一.基础脚本 首先我们构建一个简单的脚本,比如输出一串数字.文本之类,这里我们输出一串文字的同时计算一下3次方好了. # -*- coding: utf-8 -*- """ Created on Wed Aug 29 09:18:13 2018 @author: Li Zeng hai """ def test(num): pri

  • pyinstaller将python程序打包为可执行文件

    目录 前言 pyinstaller简介 pyinstaller下载 pyinstaller使用 准备好程序代码 打包程序 小结 前言 对于专业的python程序员来说,python打包工具或许用得并不多.但是对于非专业人士来说,你给他写个python项目,要让他安装python.安装依赖等等,估计人都会抓狂.或者说,如果你不想暴露自己的项目代码,python打包工具就派上用场了,市面上有多种打包工具,这里就讲讲最常用的pyinstaller的使用方法吧. pyinstaller简介 pyinst

  • 详解pyinstaller selenium python3 chrome打包问题

    今天打包selenium一个简单的请求,打完包本机运行exe没有问题,换台机器就闪退,非常蛋疼找了半天原因. 下面简述下,防止踩坑,如果闪退十有八九是浏览器版本跟浏览器插件对不上. 首先安装pyinstaller pip install pyinstaller 然后进入要打包的py文件目录 然后pyinstaller tomcat.py 这种打包方式有很多文件,不太美观 第二种打包方式:pyinstaller -F tomcat.py 下面就是重点,我之前忘记把浏览器插件复制到.exe文件目录所

  • 用PyInstaller把Python代码打包成单个独立的exe可执行文件

    之前就想要把自己的BlogsToWordpress打开成exe了.一直没去弄. 又看到有人提到python打开成exe的问题. 所以打算现在就去试试. 注:此处之所有选用BlogsToWordpress,是因为此python脚本够复杂,依赖的模块够多. 如果这个都搞定了,那么其他单个的python文件,和小python项目的打包,就更不成问题了. 1.先去找找,目前主流有哪几种方法. 找到几个名字 cx_Freeze PyInstaller py2exe 2.关于py2exe和PyInstall

  • JS URL传中文参数引发的乱码问题

    解决方法如下: 1.在JS里对中文参数进行两次转码 复制代码 代码如下: var login_name = document.getElementById("loginname").value; login_name = encodeURI(login_name); login_name = encodeURI(login_name); 2.在服务器端对参数进行解码 复制代码 代码如下: String loginName = ParamUtil.getString(request, &

  • 关于pyinstaller 打包多个py文件的问题

    目录 安装pyinstall 注意事项 参数详解 pyinstaller最佳使用方式 第一步,通过上面的命令执行打包,此时会生成相应的spec文件 第二步:对xxx.spec文件执行pyinstaller 指令 spec文件解析 手动修改spec文件 笔记: pyinstaller的常见问题 尝试解决1: 尝试解决1,测试结果: 以下上是给我启发的网友的操作方式,记录并感谢 实验项目结构 遇到的问题 Python 中的 exit() 和 sys.exit() 的区别 安装pyinstall pi

随机推荐