使用 pyinstaller "compiled"一次获取已执行文件的路径



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

在我的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.reapath..(来获取当前的目录,但在可执行文件中没有一个能很好地工作。

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

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

然后,它继续从那里启动您的应用程序,临时目录将成为应用程序生命周期内的运行时程序。当应用程序最终关闭时,它会在退出时删除临时运行时目录。

既然是这样,还有其他选择。

要在运行时获取当前工作目录,请使用:
path = '.' 
#or
path = os.getcwd()
要在运行时获取已编译的可执行文件的路径:
path = sys.executable

相关内容

  • 没有找到相关文章

最新更新