[英]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.