0

我正在开发一个 python 应用程序,并且有一个关于对其进行编码的问题,以便在用户通过 setup.py install 或类似方法将它安装在他或她的机器上之后它仍然可以工作。

在我的一个文件中,我使用以下内容:

file = "TestParser/View/MainWindow.ui"
cwd = os.getcwd()
argv_path = os.path.dirname(sys.argv[0])
file_path = os.path.join(cwd, argv_path, 文件)

为了获得路径MainWindow.ui,当我只知道相对于主脚本位置的路径时。无论我从哪里调用主脚本,这都有效。

问题是用户在他或她的机器上安装应用程序后,相对路径不同,所以这不起作用。我可以使用__file__,但据此 py2exe 没有__file__.

有没有实现这一目标的标准方法?还是更好的方法?

编辑:

我是否应该担心 py2exe 而只使用 py2exe __file__?我没有立即使用 py2exe 的计划,但我希望学习在这种情况下访问文件的正确方法。

4

1 回答 1

1

使用 setup.py 从来没有一个简单的答案适用于所有场景。Setup.py 是一个巨大的 PITA,用于处理不同的安装过程(例如,“setup.py install”、py2exe、py2app)。

例如,在我的应用程序中,我有以下代码来查找应用程序所需的文件:

def getHome():
  if hasattr(sys, "frozen"):
    if sys.platform == "darwin": # OS X
      return os.path.join(os.path.dirname(os.path.dirname(sys.executable)), "Resources")
    return os.path.dirname(sys.executable)
  else:
    return os.path.dirname(__file__)

为使用 py2exe 和 py2app 创建的应用设置了“冻结”。

因此,要回答您的问题,请使用__file__而不用担心 py2exe。如果您需要使用 py2exe,则可能无论如何都需要创建一个特殊情况。

于 2010-06-16T03:48:26.333 回答