Kivy中的目录转到Home目录,而不是Mac中的MAIN.PY目录,而不是在Windows中

  • 本文关键字:目录 中的 Mac MAIN PY Windows Home Kivy kivy
  • 更新时间 :
  • 英文 :


我的情况不寻常。我有一个功能完全实用的Kivy应用程序。本质上,它使用FileChoosericonView并采用root

    `FileChooserIconView:
        filters: [root.selected]
        size_hint: (1, 0.4)`

这样,使用此功能

`def selected(self, directory, filename):
    # This function extracts the selected folder using 
    #the information from FileChooser
    # This function takes as input:
    # -filename: The filename of each file in each directory
    # This function gives the output:
    # -the full path to the directory with the selected folder
    self.ids.mypath.text = os.path.join(os.path.dirname(filename), '') `

我可以提取感兴趣的目录(而不是目录中的每个文件)。

该应用程序将使用FileChooser提取感兴趣的目录,并使用它递归提取所有文件并处理它们。

它在Windows的Spyder中完美工作。我将其包装在Windows中,并且可以作为独立的EXE完美工作(找到上传所需的所有文件并完美工作)。

它在Mac中的Spyder中完美工作。但是,我将其包装在Mac中,并且完全无法找到本地文件。这是我的问题。一旦在Mac中打包,就没有在Dist文件夹中寻找本地文件,而是在Mac Home目录中寻找它们。它需要读取实际上在DIST文件夹中的文件,但是该应用程序不在此处寻找。它在Mac主目录中寻找它。

我试图使用几种方法将当前目录放置在amain.py所在的位置(在DIST文件夹中)

filename = inspect.getframeinfo(inspect.currentframe()).filename
path = os.path.dirname(os.path.abspath(filename))

来自问题

如何正确确定当前脚本目录?

,但仍然可以看到Mac主目录,而不是Main.py所在的目录。

我试图使用上面的路径更改目录,但仍然转到MAC主目录。

当我在main.py文件中使用print(os.getcwd())时,在Spyder中使用时会打印正确的目录,但包装后它转到Mac Home目录。我真的被卡住了,找不到类似的问题。

任何帮助。

非常感谢您的所有评论,尤其是约翰·安德森(John Anderson),他们使我走上了正确的轨道。他们使我的搜索变得更加容易。

最后,我解决了它。

包装应用程序时,您应该参考main.py的位置。我正在使用__file__,当应用程序未打包时,它可以正常工作,这就是为什么它在Spyder中起作用的原因。但是,当应用程序打包时,找到main.py文件夹的正确方法是sys._MEIPASS

它很简单,就像使用sys._MEIPASS

有关更多详细信息,约翰·安德森(John Anderson)提供的链接https://pyinstaller.readthedocs.io/en/stable/runtime-information.html#using-file-and-sys-meipass很棒。

最新更新