zoukankan      html  css  js  c++  java
  • PyQt 工程打包成exe之后获取当前路径出错问题处理

    平常写python代码,获取当前路径习惯用

    os.path.realpath(os.path.dirname(__file__))
    

    即通过python的__file__来判断脚本路径以此作为当前文件路径.

    但是PyQt的代码通过pyinstaller打包的exe,再通过这种方式获取当前路径,获取出来的却是

    C:\Users\Windows账号名\AppData\Local\Temp\_xxxx 这样的路径.

    打开这个路径,可以看到pyinstaller打包的exe它运行依赖的一些库文件都释放到了这个目录.我推测是打包exe时候,pyinstaller把可执行程序所需的库先打包进exe文件,在执行时候exe文件再把这些库文件释放到Temp文件夹下.

    那怎么修复获取当前路径出错问题呢?

    有两个方案:

    1. 通过sys.argv[0]的值来判断

    os.path.realpath(os.path.dirname(sys.argv[0]))
    

    2. 通过sys.executable的值来判断

    os.path.realpath(os.path.dirname(sys.executable))
    

    sys.argv[0] 是指命令行上可执行文件的路径.

    sys.executable是 Python 解释器的可执行二进制文件的绝对路径,直接在pycharm里面运行时候,sys.executable获取的python.exe的路径,但是python脚本打包成exe之后,sys.executable就是exe所在的文件路径了.

    • 下面这个是以脚本形式运行sys.executable获取到的路径

    • 下面这个是打包成exe之后以同样方式获取到的路径
      image

    相对而言,使用sys.argv[0]方便一些,毕竟不管是以python脚本方式运行还是打包成exe之后再执行,它获取的路径是一致的.

  • 相关阅读:
    项目成本管理控制成本
    项目成本管理制定预算
    完工尚需绩效指数 TCPI
    第八章 项目质量管理
    第七章:项目成本管理
    项目时间管理制定进度计划
    PV EV AC BAC EAC ETC等计算公式
    项目时间管理控制进度
    淘小宝相册图片批量下载工具
    WebBrowser.Navigate异步运行,使其与其他进程同步的方法
  • 原文地址:https://www.cnblogs.com/leipei2352/p/15582416.html
Copyright © 2011-2022 走看看