繁体   English   中英

安装setup.py后访问文件

[英]accessing files after setup.py install

我正在开发一个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, file)

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

问题是,用户在其计算机上安装应用程序后,相对路径不同,因此无法正常工作。 我可以用__file__ ,但根据这个 ,py2exe没有__file__

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

编辑:

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

对于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,则可能仍然需要创建一个特殊情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM