zoukankan      html  css  js  c++  java
  • python 打包pyinstaller 问题记录

    • 打包报错:“failed to execute pyi_rth_pkgres”问题

      先卸载pyinstaller然后在从GitHub上下载安装 

    1. pip uninstall pyinstaller
    2.  pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

    庄稼人不是专职python开发的道友。尽管与python相识已多年,可惜相识不相知,仅仅是偶尔借助pydev写一些简单的小工具。

    多年来。一直困惑于这样一个问题:相同的project。相同的代码,使用pydev能够执行随意一个python脚本,而使用命令行执行却不行?命令行下(或者双击执行)总是提示“ImportError: No module named xxx”?pydev到底做了什么魔术呢?

    长话短说,以上面project为例,假设是在命令行中直接执行 python c.py , 都会提示"ImportError: No module named xx_package.b".可是pydev中能够直接执行。

    比較两者的包查找路径,也就是sys.path。

    pythondev:

    ['F:\Archive\workspace-java\PyExperiment\xx_package', 'F:\Archive\workspace-java\PyExperiment', 'F:\Archive\workspace-java\PyExperiment\xx_folder' 。。

    。。]

    命令行:

    ['F:\Archive\workspace-java\PyExperiment\xx_package', 。。。]

    什么都不用说了,明眼人一看就明确了。pydev在执行时会把当前project的全部文件夹路径都作为包的搜索路径,而命令行默认仅仅是搜索当前路径。也于是乎。xx_package也就不可能会被找到。由于它是在上一级文件夹中。

    明确了这一点,剩下的就非常easy了,要在命令行中运行c.py, 或者改动sys.path, 将上一级文件夹也包括进去。只是个人不喜欢。

    比較简单的方式还是统一脚本的运行路径是project的根文件夹,即每次都在project根文件夹下新建一个脚本,比方叫main.py。

    它什么也不做,仅仅是将c.py导入进来。仅此而已。

    main.py

    import xx_package.c

    试试,这样就能够正常在命令行中执行了,当然双击脚本也是也一样的

    参考:https://www.cnblogs.com/yjbjingcha/p/7040314.html

    • python生成exe文件运行闪退解决方法:

    问题描述
    最近写了个小项目,需要打包成exe文件运行,程序在Pycharm里面能够完美运行,可是,打包成Exe以后程序就会闪退,无法正常工作

    解决方法
    解决方法其实也比较简单,首先,需要说明的是,我写的程序需要调用外部文件,也就是配置文件,ini格式的,在源代码里面,我的程序调用配置文件用的是相对路径。问题也就出在这里。

    这个是我打包之前的文件的结构,可以看到ini文件和其他py文件待在一起:

     接下来在当前目录文件夹里面打开cmd,输入pyinstaller -F test.py进行打包

    打包以后的目录结构是这样的:

     打开dist文件夹,可以看到我们打包出来的exe文件:

     

     双击exe文件,发现程序闪退,没有正常工作(闪退,无法截图)

     接下来说解决方法,解决方法也很简单,正如刚才所说,我的程序调用了配置文件,而配置文件的调用路径是相对路径,程序里面写的是调用当前文件夹下的ini文件,那么,在exe所在的文件夹下面,运行exe程序,程序就会由于找不到配置文件,引起闪退的问题,解决方法很简单,将ini文件,放在和exe文件同一个文件夹下,就像下图:

     这样,再运行程序,你就会发现,程序能够正常运行啦!

     总结
    综上,对于exe闪退的问题,大家可以适当考虑是否是因为文件路径的问题导致的
    ————————————————
    版权声明:本文为CSDN博主「GodLordGee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/GodLordGee/java/article/details/82463997

  • 相关阅读:
    AJAX 后台返回多种数据
    oracle 学习摘录
    JAVA中使用FTPClient上传下载
    struts 2 学习
    js 回车事件
    @Resource和@Autowired作用和区别
    spring 常用注解
    正则表达式
    javascript 学习教程
    cxf 发布 一个简单的 webservice
  • 原文地址:https://www.cnblogs.com/lnn123/p/13254372.html
Copyright © 2011-2022 走看看