Rab*_*ski 5 python windows cross-platform working-directory
我有一个python程序,我使用py2exe编译成Windows .exe.使用Inno Setup,我创建了一个Windows安装程序.
我的程序的性质是它使用插件,后来使用该__import__()语句导入.这些插件位于"plugins"文件夹中,该文件夹本身位于程序的.exe文件所在的子文件夹中.
现在,为了让程序找到插件,它先前在我的文件顶部有以下语句:
sys.path+= ['.']
Run Code Online (Sandbox Code Playgroud)
但是,当用户通过Windows的开始菜单启动程序时,这不能很好地工作,因为显然工作文件夹设置为开始菜单(而不是.exe所在的位置).所以'.'没有解决我想要的问题.
我通过将语句更改为以下来修复它,以便该__import__()语句也查找.exe所在的文件夹(因为它argv[0]是可执行文件的完整路径):
sys.path+= [os.path.dirname(sys.argv[0])]
Run Code Online (Sandbox Code Playgroud)
但是,我不确定我是否选择了正确的解决方案.特别是,因为我的程序是跨平台的(Windows,OSX,Linux),sys.argv文档说argv [0],"它是依赖于操作系统的,无论这是否是一个完整的路径名".
我应该以不同的方式解决这个问题,还是我的方法可行
请使用__file__该模块。你可以这样写
sys.path+=os.path.dirname(mymodule.__file__)
这将在 sys.path 中添加模块的父目录。
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |