【问题标题】:Real path to config.ini in python binary *app in MacOSMacOS 中 python 二进制 *app 中 config.ini 的真实路径
【发布时间】:2019-02-24 19:57:37
【问题描述】:

我有这个代码:

def _read_config(self):
    config = configparser.ConfigParser()
    config.sections()
   # I tried 
    path_main = os.path.dirname(os.path.realpath(__file__))
   # and this after create exec file with pyinstaller nothing changed
    path_main = os.getcwd() 
    print(path_main)
    file = os.path.join(path_main, "config.ini")
    print(file)
    config.read(file)
    return config

当我使用带有python gui.py 的终端在 MacOS 中运行代码时,它会打印:

/Users/telos/Desktop/Telos-Monitor-Tool/client
/Users/telos/Desktop/Telos-Monitor-Tool/client/config.ini

但是当我执行pyinstaller --onefile --windowed gui.py 时,我收到了 1 个应用程序文件,当我运行它时,我得到了这个:

/Users/telos
/Users/telos/config.ini

但是一个文件 app 和 ``gui.py` 在同一个目录下。

所以我有一个错误,因为 Python 解析器找不到 config.ini。

在重新创建应用程序后建议我使用 print(QtCore.QCoreApplication.applicationDirPath()),我有 2 个文件 1 gui.app,2-nd gui.exec。 gui.exec 找到 config.ini 并一切正常,但 gui.app 无法发送错误。

知道是什么问题吗?

【问题讨论】:

  • 我没有在您的代码中看到对 os.getcwd() 的调用。
  • 使用os.getcwd() 更改,但尝试使用getcwd(),这样,一样
  • 工作目录不是脚本/可执行文件所在的目录,而是你运行它时所在的目录。如果您在运行它时位于 /Users/telos(任一版本),那么它的工作目录就是这样。
  • 如何检查应用程序的位置?来自 Python?
  • 你读过这个问题了吗,path_main =os.path.dirname(os.path.realpath(__file__))我试过了,和getcwd一样,在我为mac创建exec文件后应用程序找不到配置并返回/Users/telos/config.ini但配置/Users/telos/Desktop/Telos-Monitor-Tool/client/config.ini

标签: python python-3.x macos pyinstaller


【解决方案1】:

由于您使用的是 PyQt5,如果您想获取可以使用的可执行文件夹:

QtCore.QCoreApplication.applicationDirPath()

【讨论】:

  • 你知道为什么exec运行和查找文件正常而app没有,pyinstaller dist目录下有两个文件吗?
  • @Hellbea 我没有mac,我在linux和windows中试过,在linux的情况下它会生成一个.elf,在windows的情况下它会生成一个可执行的.exe,在 mac 的情况下,我想它应该只生成一个可执行文件,我不明白为什么你有 2 个输出,另一方面,如果你要管理设置,我建议使用 QSettings,你只需要建立这个类一些最低配置,然后他在通用位置创建 .ini。
  • @Hellbea QSettings 使用的路径不依赖于可执行文件。
  • 我也是 windows 和 linux 的完美决定,但是 mac os 不想正常工作
  • @Hellbea 我为 mac 工作的应用程序,但我不使用 ConfigParser 而是 QSettings,要使用它,您只需设置 QCoreApplication.setOrganizationXXX(),因为它表明它将在取决于操作系统而不是应用程序的正确位置。欲了解更多信息,请阅读doc.qt.io/qt-5/qsettings.html
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2016-06-15
  • 2023-04-01
相关资源
最近更新 更多