我有一个 python 程序,我使用 py2exe 将其编译为 Windows .exe。使用Inno Setup,我创建了一个 Windows 安装程序。
我的程序的性质是它使用插件,这些插件后来使用__import__()
语句导入。这些插件位于“插件”文件夹中,该文件夹本身位于我的程序的 .exe 文件所在的子文件夹中。
现在,为了让程序找到插件,它早些时候在我的文件顶部有以下语句:
sys.path+= ['.']
但是,当用户通过 Windows 的开始菜单启动程序时,这并不能正常工作,因为显然工作文件夹被设置为开始菜单(而不是 .exe 所在的位置)。所以'.'
没有解决我想要的。
我通过将语句更改为以下内容来修复它,以便该__import__()
语句也可以在 .exe 所在的文件夹中查找(因为argv[0]
是可执行文件的完整路径):
sys.path+= [os.path.dirname(sys.argv[0])]
但是,我不确定我是否选择了正确的解决方案。特别是,因为我的程序是跨平台的(Windows、OSX、Linux),并且sys.argv 文档说 argv[0] 说“它是否取决于操作系统,这是否是一个完整的路径名”。
我应该以不同的方式解决这个问题,还是我的方法可以?