【问题标题】:get the path of the executed file once "compiled" with pyinstaller使用pyinstaller“编译”一次获取执行文件的路径
【发布时间】:2022-11-01 19:15:34
【问题描述】:

我知道关于这个主题有很多答案,但是一旦你在可执行文件中编译了一个脚本,就没有人能工作了。

在我的 python 脚本中,我在脚本的同一目录中创建了一个文件。 要获取当前目录的路径,我使用 pathlib

basepath = Path(__file__).parent
filename='myfile'
filepath=os.path.join(basepath, filename)

如果我打印目录,我会在好目录中写入文件,并且在 python 中一切正常 (即桌面/myname/myscriptdir/myfile)

但是一旦我使用带有--onefile的pyinstaller“编译”,如果我启动可执行文件,目录将是 喜欢 /var/folders/nr/w0698dl96j39_fq33lqd8pk80000gn/T/_MEIP12KxC/myfile

相信我,我尝试了很多不同的方法(abspath,os.realpath ..)来获取当前目录,没有人在可执行文件中运行良好。

【问题讨论】:

    标签: python pyinstaller


    【解决方案1】:

    当您使用带有--onefile-F 标志的pyinstaller 编译应用程序时,它创建的文件实际上是一个存档文件,例如.zip 文件。

    当您执行该文件时,它会启动一个进程,将自身提取到操作系统文件系统中某处的临时文件夹中。这是在编译的应用程序中使用__file__ 变量时报告的路径。

    然后它会继续从那里启动您的应用程序。这个临时文件夹是您的应用程序打开和运行的剩余时间的运行时目录。一次

    既然是这种情况,就有替代方案。如果您试图获取当前工作目录的路径,那么您可以简单地使用.os.getcwd()。如果您尝试获取用于运行应用程序的可执行文件的路径,则可以使用sys.executable()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 2010-12-12
      • 1970-01-01
      • 2019-09-22
      相关资源
      最近更新 更多